Adăugări personalizate - lua api

Un widget este un element minim al interfeței (panou, buton, element de text, câmp de introducere, etc.). Există mai multe tipuri de widgeturi (descrise mai jos), dar implementarea lor este întotdeauna moștenită de la clasa Widget de bază descrisă pe această pagină. Nu puteți crea obiecte din clasa de bază Widget.

Sistemul widget este un sistem care se ocupă cu vizualizarea interfeței și prelucrarea intrărilor de utilizatori. Fiecare widget poate fi reprezentat de resurse în sistemul de resurse (fișier XDB) și copia efectivă (cu câmpuri, metode și reacții) în timpul programului.

Un widget este reprezentat fizic pe disc de către resursa acestui widget sub forma unui fișier xdb. Numele fișierului widget este:

"<путь к аддону>\<Название виджета>.(tip widget) .xdb "

O instanță a widgetului este creată pe baza fișierului său de resurse (adică resursa nu este un widget, ci un șablon pentru viitorul widget).

În timp ce aplicația se execută, resursa este reprezentată ca mâner WidgetDesc

Exemplu widget este reprezentat de tipul WidgetSafe (vezi LuaApiTypes)

Comportamentul și afișarea widgeturilor pot fi afectate prin utilizarea metodelor WidgetSafe listate în CategoryWidget

În timp ce aplicația se execută, puteți obține descriptorul WidgetDesc al unui WidgetSafe widget, folosind

În timp ce aplicația rulează, puteți utiliza WidgetSafe widget-ului copil, orice widget-mamă

Pe baza unei singure resurse, pot fi create mai multe widget-uri fizice (de exemplu, elemente list-container)

Un astfel de widget nou trebuie adăugat oricărui părinte folosind

IMPORTANT! Astfel de widget-uri create dinamic trebuie să fie șterse când este necesar, folosind

DestroyWidget (auto). pentru a preveni utilizarea inutilă a memoriei.

Un widget poate defini mai multe reacții (apăsarea, mutarea, etc.) și să implementeze în scriptul addon procesoarele acestor reacții. Vezi mai jos.

Tipuri de widgeturi

Există mai multe tipuri de widget-uri și tipuri de resurse corespunzătoare:

Simple Widgets:

WidgetEditLine - linia de intrare

WidgetEditBox - câmp de introducere multiplă

WidgetTextView - control pentru afișarea textelor

containere:

WidgetContainer - container de bază derulat și implementarea lui:

WidgetScrollableContainer - container derulat cu widget-uri

WidgetTextContainer - container de text derulant

WidgetScrollBar - bara de derulare de bază pentru containerele derulate și implementarea acesteia:

WidgetDiscreteScrollBar - bara de derulare discretă

WidgetGlideScrollBar - bara de derulare netedă

WidgetSlider - glisorul de bază pentru bara de derulare și implementarea sa

WidgetDiscreteSlider - glisorul discreționar

WidgetGlideSlider - glisorul neted

Widget-uri speciale:

WidgetControl3D - control pentru afișarea obiectelor 3D

Toate aceste tipuri de resurse moștenesc, adică ele conțin câmpurile din clasa de bază Widget. Acesta este, de exemplu, câmpul BackLayer este în ambele WidgetPanel și WidgetTextView. De asemenea, toate tipurile de widgeturi pot trimite următoarele reacții.

Puteți crea numai widget-urile implementărilor specifice enumerate mai sus. Adică nu puteți crea un widget de tip Widget, WidgetContainer, WidgetScrollBar, WidgetSlider.

Domenii Widget

IMPORTANT! Numele câmpurilor sunt case-sensitive.

Câmpuri existente în clasa de bază Widget:

Câmpurile de bază:

Nume: șir - numele sistemului de widget

Vizibil: boolean - dacă widget-ul este vizibil. Valoarea implicită este adevărată. Dacă widgetul nu este vizibil, atunci acesta nu este disponibil pentru reacții

Enabled: boolean - dacă widget-ul și toate widgeturile sale copil sunt disponibile pentru reacții. Poate afecta aspectul (widgetul este "însămânțat"). Valoare implicită

Prioritate: numărul (întreg) - prioritatea afișării (afectează de asemenea procesarea evenimentelor mouse-ului) a widget-ului din lista widget-urilor părintelui său. Adică, cu ajutorul acestui câmp este posibil să se formeze o ierarhie de afișare a widget-urilor întregului addon.

locație

Destinația de plasare: ["WidgetPlacementXY"] - descrierea locației widgetului.

Widgeturi pentru copii:

Copii: tabelul Widget - widget-uri pentru copii. Aproape fiecare widget poate conține widget-uri copil, cu excepția cazurilor speciale, cum ar fi un cursor etc. widget-uri pentru copii sunt afișate în partea de sus a părintelui și intercepta reacției (în cazul în care acestea sunt declarate și au semnat stivuitoare) înainte de widget-mamă, cu excepția cazurilor speciale, după cum se menționează mai jos.

clipContent: boolean - Trebuie să decupez conținutul, inclusiv widget-urile copil, la limitele acestei. Implicit este fals.

Se afișează:

BackLayer, FrontLayer: WidgetLayer - straturi pentru afișarea oricărei texturi. Poate fi absent. BackLayer - stratul inferior, FrontLayer - stratul superior.

textureMask: UISingleTexture - Textură cu alfa. Folosit pentru a specifica o mască, care va fi tăiat textura principală a acestui control și a tuturor copiilor săi

decolorare: numărul ([0.0f, 1.0f]) - transparența vizuală a widget-ului. Valoarea implicită pentru 1.0f este opacă.

Reacții de urmărire și de limitare:

pickMask: UISingleTexture - textura negru și alb (puteri ale lui 2) pentru a defini active (pixelii albi) zona pentru clicuri de mouse. Trebuie să setați manual mipSW = 0 când exportați

PickChildrenOnly - Reacționează reacțiile mouse-ului numai pentru copiii acestui widget, ignorând widgetul în sine

forceWheel - Ignore PickChildrenDoar când derulați cu rotița mouse-ului și treceți. Manipulați întotdeauna reacția de defilare cu rotița mouse-ului

IgnoreDblClick - Ignorați dublu clic pentru widget și pentru copiii săi

TransparentInput: boolean - dacă widget-ul este transparent pentru intrare. Implicit este fals.

Câmpuri speciale:

isProtected: boolean - Fie interzicerea utilizatorilor din operațiuni cu widgetul. Implicit este fals. Consultați, de asemenea, AttachWidget2D.

TabOrder: număr (întreg) - specifică ordinea controlului prin tasta Tab. Implicit este 0 (nu participă la accesarea cu crawlere). Pentru a participa la accesarea cu crawlere, valoarea trebuie să fie mai mare de 0.

soundShow, soundHide: WidgetSoundBase - sunete pentru afișarea și ascunderea widgetului.

Widget Reactions

Pentru widget, puteți declara reacțiile și apoi le puteți semnala pe ele în scriptul addon.

În acest caz, când apare un eveniment care declanșează un răspuns, în script se va apela un handler semnat cu parametrii parametrii. Consultați OnReaction(Params).

Reacțiile pot fi mouse-ul (împingere, obiectiv etc.) și tastatură.

Reacții Widget de tastatură

Reacțiile tastaturii pot fi implementate numai pentru cheile care nu se află în fișierul input.cfg. Pentru add-on-urile personalizate, reacțiile tastaturii nu sunt furnizate. reacțiile tastaturii sunt declarate numai în WidgetForm și WidgetButton.

bindSections: tabelul BindSection - lista de reacții la clicurile de la tastatură. domenii:

bindSection: șir - denumirea secțiunii

bindedReactions: tabelul de șir - lista de reacții

Mouse Reactions Widget

Reacții posibile pentru clasa de bază Widget:

reactionOnPointing: șir - notificare despre plasarea cursorului pe widget. (În plus față de widget-urile cu butoane de prelucrare speciale, etc.)

forceReactionOnPointing: șir - notificare privind mutarea pe widget, indiferent de disponibilitatea acestuia pentru clicuri. (Utilizați numai cu o nevoie puternică - consumă o mulțime de resurse.)

reactionWheelUp: șir - notificare despre derularea roții mouse-ului în sus

reactionWheelDown: șir - notificare despre deplasarea roții mouse-ului în jos

Există metode (a se vedea CategoryAllowedInReactions) pe care le puteți utiliza în add-on-urile personalizate numai în clicurile de clicuri de mouse.

Un fel de widget "MyWidget (WidgetPanel) .xdb":

Când defilați roata mouse-ului deasupra widgetului din acest răspuns script addon va fi trimis „wheel_up“ și „wheel_down“, chiar și în cazul în care mouse-ul este în prezent situat deasupra widgetului copil poate da clic „Slider. (WidgetButton) .xdb“.

Pagini asemănătoare: "CategoryLuaApi" "CategoryWidgetMembers"

Pagini asemănătoare: "CategoryLuaApi" "CategoryWidget"

Articole similare