text generátor button (messeage type, two elements one widget)
Jednoho dne se stane, že si budeme chtít zobrazit či posílat text, protože né vše se dá vyjádřit v číslech.
myšlenka:
Pro pozdější užití, veškeré možnosti co můžeme dostat do "messeage" jsou:
Ale protentokrát si vystačíme jenom se string.
V tomto návodu si uděláme tlačítko, které přijme hodnotu, ukáže jí, a při kliknutí na něj pošle jeho upravenou hodnotu Založíme si nový Widget a pojmenujeme ho např text display/sender.
Úvodní řádky kódu:
Začneme se vstupem a výstupem
Messeage type je poněkud specifická, a to tím, že je třeba jako poslední argument vypsat do pole všechny hodnoty co se budou posílat. (seznam všech možných hodnot je vypsán výše). Počet prvků v poli by měl být dostatečný pro všechny případy.
Nesmíme samozřejmě zapomenout na sizeProfiles
Protože v tomto návodu chci složit Widget ze dvou elementů, kterům budu nastavovat barvu, připravím si configProperities
background element a jeho stylyzace
přidáme "background" alement, na kterém budeme vykreslovat přijatý text (a později na něj dáme tlačítko)
nastylujeme ho a přidáme
Při testu dostaneme něco takového:
tlačítko (vrchní element) a jeho stylizace:
Nyní přidáme druhý element, tlačítko. Postup je pořád stejný
Pokud teď klikneme na test, uzřeme něco podobného tomuto
interaktivita:
Pokud ale změníme cokoliv v configuration, nic se nestane. Proto přidáme event-listener na změny v nastavení
Toto při každé změně v configu, aktualizuje všechny hodnoty. Mužeme samozřejmě poslouchat jednotlivé configy a pravovat pouze tu danou hodnotu, co se změní, např.
změna velikosti textu apod.:
Doděláme zbytek drobností jako například dynamickou velikost textu a prostřední ikony:
U backPan měníme velikost textu na dvacet procent výšky celého backPan, kvůli tomu, že máme ještě tlačítko uprostřed, jenž by zakrylo text.
Připomínám, že visibleRect vrací údaje v pixelech.
Výhodou Resize je že se automaticky zavolá při spuštění testu.
Tlačítko by nyní mělo být schopno měnit velikost textu a ikonky, dle naší vůle
interakce s uživatelem:
Vrhneme se na poslední část, Interaktivitu s uživatelem.
Nejprve začneme měnit text dle vstupu, samozřejmě čím jiným, než listenerem
S messeage pracujeme jako s polem, pořadí jsme si určili již na začátku v posledním argumentu v input/output. Protože víme, že první věc v poli je string (a pouze string), rovnou si ho vypíšeme.
Ještě přidáme to, že při kliknutí na tlačítko uprostřed pošleme poslední zprávu co nám přišla z inputu a přidáme k ní text.
button.isHover kontroluje, zda je kurzor opravdu nad daným elementem, bez něj reaguje automaticky na mouse.down. TODO: kvůli chybě v gridu je teďka zapotřebí si v listeneru "messeageRecived" uložit bokem získaný objekt pro pozdější práci s ním
závěr:
Klikneme na test a otestujeme tlačitko na všechny způsoby.
Last updated