Polski:Strony

Wprowadzenie
Strony w Gaia są reprezentowane przez pliki fla, które są utworzone poprzez scaffolding albo ręcznie. Strony mogą zawierać assety albo inny strony (podstrony) i są reprezentowane w pliku site.xml poprzez węzeł "page"

Zwykła strona to poprostu MovieClipAsset ( zobacz Assets) która posiada funkcję pojawiania i chowania strony ( transition ) oraz wbudowany mechanizm relacji z dodatkami (assets) rodzicami(parents) i potomkami (children)



Przejścia strony (Page Transitions)
Strony w Gaia mają możliwość pojawiania się i znikania. Animacje te mogą być kontrolowane z poziomu linii czasu albo poprzez actionscript - wszystko zależy od użytkownika.

Istnieją cztery wymagane metody dla stron w Gaia,


 * transitionIn;
 * transitionOut;
 * transitionInComplete;
 * transitionOutComplete;

Strony przechwytują te zdarzenia z Gaia i klasy stron musą mieć zdefiniowane te metody. Wywołanie metod "complete" jest konieczne aby Gaia wiedziała że zakończono zdarzenie "trasitionIn", "transitionOut". Te metody są automatycznie zdefiniowane przy tworzeniu nowej strony.

Jeżeli do animacji używa się "timeline", można wywołać te metody bezpośrednio z "timeline". W innym wypadku należy odpowiednio okodać klasę strony.

W przypadku użycia TweenLite do animacji, można wykorzystać zdarzenie onComplete.

AS3 override public function transitionOut:void {     TweenLite.to(this, .3, {alpha:0, onComplete:transitionOutComplete}); }

AS2 public function transitionOut:Void {     TweenLite.to(this, .3, {_alpha:0, onComplete:Delegate.create(this, transitionOutComplete)}); }

Generalnie nie jest rekomendowane nadpisywanie tych metod, lepszym rozwiązaniem jest ich wywoływanie. W przypadku użycia AS3 nie ma problemu natomiast przy AS2 we Flashu jest bug.

Wywołanie metody "complete" spowoduje że gaia przystąpi do usuwania strony, dlatego należy tą metodę wywołać na końcu.



Właściwości strony (page)
Istnieją 3 podstawowe właściwości dla każdej strony (page): assets, page i copy

'Powyższe właściwości są dostępne dopiero po wywołaniu zdarzenia transitionIn.

załączniki (assets)
assets:Object Jeżeli strona posiada załączniki w pliku site.xml, są one umieszczane w obiekcie asset pod kluczem id ( id tym samym co w site.xml ). Więcej informacji o załącznikach można znaleźć w sekcji Assets w dokumentacji.

strona (page)
page:PageAsset Referencja do klasy PageAsset strony. Daje ona bezpośredni dostęp do właściwości których używa Gaia do zdefiniowania strony np: parent, children, branch i inne.

AS2 i AS3

var myBranch:String = page.branch; var myParentSrc:String = page.getParent.src;

Więcej na temat właściwości page można znaleźć w Site XML w dokumentacji.

copy
copy:Object Jeżeli strona ma włączoną opcję SEO w site.xml i pliki XHTML zostały wygenerowane to istnieje możliwość dostępu do zawartości pliku html. Więcej informacji w dziale SEO w dokumentacji. var TXT_Header:TextField; TXT_Header.text = copy.someValue; trace(copy.anotherValue);

onDeeplink
Jest to opcjonalna metoda dla funkcjonalności deeplink która działa w połączeniu z SWFAddress.

onDeeplink(event:GaiaSWFAddressEvent)

Gdy wystąpi zdarzenie deeplink z SWFAddress, deeplink będzie przekazany do strony przez metodę onDeeplink. Parametr event posiada właściwość deeplink. Gaia automatycznie dodaje listenera do każdej strony. Więcej informacji na temat zdarzeń deeplink można znaleźć w dokumentacji w sekcji Events and Hijacking.

GaiaSWFAddressEvent posiada dwie właściwości deeplink i branch. Deeplink to wartość spoza brancha, natomiast własność branch to poprawny branch ( masło maślane masłem smarowane) np adres http://wp.pl/#aktualnosc/xxxx, w przypadku gdy "aktualnosc" to nasz poprawny branch, deeplink będzie zawierać /xxx



Informacje techniczne
Strony są instancjami klasy PageAsset która dziedziczy z MovieClipAsset. Strona jest swf-em który jest ładowany do dynamicznie wygenerowanego MovieClip-a a referencja do tego MovieClip-a jest przekazana do instancji PageAsset. Referencja do klasy PageAsset i właściwość "assets" są ustawione w document class. Document class jest wygenerowany automatycznie podczas scaffolding i dziedziczy po klasie AbstractPage, który rozszeża AbstractBase.

Trzy właściwości assets, page i copy tak jak i metoda onDeeplink można znaleźć w AbstractPage i AbstractBase z których dziedziczy strona (page). Obie klasy znajdują się w pakiecie com.gaiaframework.templates.

AS3 Pages
Strony w AS3 używają docment class i nie potrzebują powyższego kodu. Jeżeli do stworzenia strony została użyto template timeline, wygląda to podobnie jak w powyżej z tą różnicą że w pierwszej klatce jest tylko jedna metoda stop;. W przypadku użycia templatu Actionscript, na timeline nie ma żadnego kodu. Scaffolding to jedna linijka w konstruktorze strony. new Scaffold(this);

AS2 Pages
Jeżeli użytko Timeline template, w każdej stronie w pliku fla zostaną utworzone warstwy: AS (Actionscript), LABELS, i content. Zostaną też dodane dwie klatki: "in" i "out".

W przypadku użycia Actionscript template, w pliku fla będzie tylko jedna klatka.

W pierwszej klatce warstwy AS będzie poniższy kod:

import Package.Page; Page.initDocumentClass(this); stop; scaffold;

Package i Page zostaną zamienione na właściwe. W środku klasy page initDocumentClass(this) symuluje funkcjonalność AS3 Document class.

Na zakończenie można usunąć linię "scaffold;" i usunąć funkcję scaffold z klasy page.

Klasa Page
Klasa page dziedziczy po klasie AbstractPage która dziedziczy AbstractBase i implementuje  IPage i IBase.

Klasa AbstractPage zawiera właściwości assets, page i metodę onDeeplink.

AbstractBase zawiera cztery wymagane metody transition. Istnieje możliwość nadpisania ich: transitionIn i transitionOut które domyślnie mają metodę gotoAdnPlay, albo można dodać do nich słuchacza ( listener) dla zdarzenia które ogłaszają ( dispatch event)

Metody transitionInComplete i transitionOutComplete nie powinnyb być modyfikowane. Gdyby zaistniała konieczność ich nadpisania należy upewnić się czy zostały wywołane metody super w AbstractBase.



Usuwanie Scaffolding ze stron


Gdy już użyto scaffolding do utworzenia stron, usunięcie samego mechanizmu scaffolding jest proste.

W przypadku AS3 wystarczy usunąc linię z konstruktora strony: new Scaffold(this);

W AS2, należy usunąć linię w pierwszej klatce templatu Page: scaffold;

Również można usunąć metodę scaffold w klasach PAGE AS2.

W momencie usunięcia tej jednej linijki z kodu ze wszystkich stron można usunąć plik scaffold.swf z folderu deploy i klase Scaffold.as z katalogu klas. Nie jest to wymagane, ale w momencie usunięcia scaffolding ze stron te 2 pliki pozostają bezużyteczne więc można jest be problemów skasować.

Można również usunąć metody: super.transitionIn i super.transitionOut w AS2 i AS3.

W przypadku napisania własnego preloadera istnieje możliwość skasowania domyślnego preloadera: PreloaderScaffold.as.

*** Upewnij się że opublikowałeś cały projekt po usunięciu scaffolding ze stron***