English title: "GUI Framework Internals (Unity3d)"
Pretty old presentation of GUI framework tips and tricks (made back in 2010).
It describes how to build the framework on top of low-level elements that the particular platforms offers (could be applied to Javascript, Flash, Unity3d and all the platforms providing the clickable screen and moveable elements).
Video recording of the presentation: https://experts.adobeconnect.com/_a204547676/p10429271/?launcher=false&fcsContent=true&pbMode=normal
Unity Web player demo: http://dankokozar.com/unity/GuiGridTest.html
It's all in Croatian. Sorry! :)
9.
UiComponent klasa ima tendenciju biti ogromna
(gomila funkcionalnosti je u njoj)
Razbiti UiComponent u hijerarhiju
(EventDispatcher - DisplayObject –
LifecycleComponent – InteractiveComponent)
preglednosti radi
Prednost: testiranje svakog dijela hijerarhije nezavisno
Initialize() => invalidacija(*) propertyja, veličine i
pozicije
10.
Composite pattern
Parent – child odnos
AddChild(), RemoveChild()
CreateChildren() => mjesto za kreiranje childova
unutar containera
Initialize():
Parent, Stage (propagacija)
invalidacija(*) layouta
Scrolling => global, local, content (*)
15.
Top-most container
„Srce krvotoka“ prema child komponenatama u
hijerarhiji
Update()
Late event processing
Validacija komponenti
GuiStage => adapter za Stage na
MonoBehaviour
GuiApplication preko GuiStage pokreće Update()
metodu u svakom frameu
18.
Ako propertyji parenta utječu na childove
Ideja:
− Odgađa akcije do nakon instanciranja childova u
CreateChildren() metodi
− Agregiranje više istih akcija u jednu
− Update komponente tik prije iscrtavanja
Primjer
19.
SystemManager (mouse, key)
ClickManager (traži kliknutu komponentu)
ComponentManager (dohvat komponente po ID-ju)
FocusManager (focus & blur)
TabManager (tab => promjena fokusa)
EventManager (event bubbling)
Ideja: prebaciti često korištenu funkcionalnost na
centralno mjesto
Singleton ili statička klasa
21.
ListCollection
Ispucavaju event u slučaju da:
im je kompletni sadržaj promijenjen
(EVENT_COLLECTION_CHANGE)
je jedan item promijenjen (EVENT_ITEM_CHANGE)
UpdateItem()
Filter
Sort