Страницы в Gaia Framework
Введение
“Физически” страницы в Gaia представлены шаблонными Flash файлами, которые создаются во время процесса Scaffolding’а и-или созданные вами самостоятельно. Страницы могут содержать ассеты (Assets), так же как и другие страницы. Они представлены в site.xml в узлах <page>.
Это продолжение перевода, начало в Gaia Начало работы
Переходы между страницами
Страницы в Gaia имеют предустановленные переходы (transition) в- и из- (in/out). Переходы могут реализовываться в таймлайне или в коде, или комбинироваться. Это полностью Ваше решение.
Есть четыре требуемых метода для страниц в Gaia Framework, и они следуют стандартным соглашениям для timeline-based сред.
- transitionIn();
- transitionOut();
- transitionInComplete();
- transitionOutComplete();
Страницы (класс Pages) поучают эти события из Gaia и классы документов swf должны иметь эти методы определенными. Вы должны вызывать методы “complete” в конце переходов, так что Gaia будет знать что страница закочила переход к ней или выход из нее. Gaia автоматически определяет эти методы за вас для каждого созданного fla файла.
Если у вас timeline переходы, вы можете вызывать эти методы в root timeline. Если у вас actionscript переходы, вы должны указывать timeline страницы, или класс страницы ассоциированный с этим таймлайном (AS2/AS3).
Например, если вы используете что либо вроде TweenLite для переходов, то вы можете установить методы complete как onComplete параметр для объекта который вы передаете в TweenLite. Шаблоны actionscript переходов Gaia’s для скаффолдинга используют такой код.
AS2
public function transitionOut():Void
{
TweenLite.to(this, .3, {_alpha:0, onComplete:Delegate.create(this, transitionOutComplete)});
}
AS3
override public function transitionOut():void
{
TweenLite.to(this, .3, {alpha:0, onComplete:transitionOutComplete});
}
В целом, рекомендуется не перегружать (override) методы complete и вместо этого просто вызывать их. Вы можете перегружать такие методы в AS3 без проблем, но в AS2 есть ошибка Flash при перегрузке методов complete при использовании шаблонов стилей таймлайн переходов.
Свойства Page
Есть свойства которые установлены в root timeline для of swf страницы, assets и page.
Эти три свойства недоступны до вызова transitionIn().
assets
assets:Object
Если у страницы есть ассеты в site.xml, они доступны через это свойство-объект по своим id. Более подробно о том как получать доступ к ассетам находится в разделе Ассеты документации.
page
page:PageAsset
Ссылка на класс PageAsset class страницы. Это дает прямой доступ к сойствам которые создает Gaia для определения страницы, такие как над-узел, дочерние узлы, ветка и другие свойства.
Пример:
AS2 and AS3
var myBranch:String = page.branch;
var myParentSrc:String = page.getParent().src;
Более подробно о публичных свойствах страницы рассказано в разделе Site XML.
copy
copy:Object
Если у страницы включен SEO в site.xml и соответствующая XHTML страница была создана, значения тэгов <p> tag будут доступны через объект copy. Подробнее об этом в разделе документации о SEO.
var TXT_Header:TextField;
TXT_Header.text = copy.someValue;
trace(copy.anotherValue);
onDeeplink
Необязательный метод для deeplinkинга, работает с SWFAddress.
onDeeplink(event:GaiaSWFAddressEvent)
Когда происходит событие deeplink от SWFAddress, через этот метод будет передана deeplink ссылка. У события есть свойство deeplink. Gaia управляет процессом сама и вам не надо устанавливать страницы как listener’ы для добавления deeplink вручную. Больше информации о событиях deeplink events можно найти в разделе Events и Hijacking.
Техническая информация
Внутри Gaia, страницы реализуются классом PageAsset, который наследует от MovieClipAsset. Swf страницы загружается в динамически создаваемый MovieClip и ссылка на этот MovieClip передается экземпляру PageAsset. Ссылка на класс PageAsset и его свойство “assets” устанавливается в root timeline или в класс документа этого MovieClip. Класс документа этого MovieClip создается во время scaffolding процесса и расширяет AbstractPage, который расширяет AbstractBase.
Два свойства, assets и page, а также событие onDeeplink находятся в классах AbstractPage и AbstractBase от которых наследуют классы страниц. Оба этих класса лежат в пакете com.gaiaframework.templates.
Страницы AS2
Если вы используете шаблоны Timeline, то в timeline каждой созданной при scaffold процессе страницы вы найдете слой AS (Actionscript), слой LABELS, и слой для контента. Вы также увидите две установленные метки, “in” и “out”.
Если вы используете шаблоны Actionscript, то будет только один фрэйм.
В первом фрэйме слоя AS, находится следующий код:
import Package.Page;
Page.initDocumentClass(this);
stop();
scaffold();
Package и Page будут названы соответственно пакету классов страниц и id страницы. Метод initDocumentClass(this) эмулирует функциональность AS3 класса Document.
Как только вы будете готовы к работе над страницой, вы можете удалить строку “scaffold();” и удалить эту функцию из класса страницы.
Страницы AS3
Страницы AS3 используют класс документа и вышепреведенный код не требуется . Если вы используете шаблоны Timeline, то все похоже на вышесказанное за исключением того чтов в первом фрэйме вызывается stop();. При использовании шаблонов Actionscript, в timeline кода нет. Весь scaffolding это одна строка в конструкторе класса страницы.
var s:Scaffold = new Scaffold(this);
Классы страниц
Классы страниц AS2 и AS3 расширяют AbstractPage который расширяет AbstractBase и реализует IPage и IBase интерфейсы, соответственно.
AbstractPage содержит свойства assets и page, а также функцию onDeeplink.
AbstractBase содержит четыре необходим метода переходов. Вы можете перезагрузить (override) методы transitionIn() и transitionOut(), которые по умолчанию имеют gotoAndPlay() методы, или вы можете слушать отсылаемые ими события.
Методы transitionInComplete() и transitionOutComplete() не должны исправлятся, и если вы их изменети для подстройки под себя, убедитесь что вы вызываете super class method в AbstractBase.
Удаление Scaffolding из страниц
После создания каркаса сайта (scaffolded your site), удаление строительных лесов весьма просто.
В AS3, удалите эту строку из конструкторов классов Page:
var s:Scaffold = new Scaffold(this);
В AS2, удалите эту строку из первого фрэйма файлов Page :
scaffold();
Также, свободно удаляйте Also, scaffold() метод из AS2 классов Page.
Как только вы полностью удалите эту строку из всех ваших страниц, вы можете удалить scaffold.swf их папки развертывания (deploy), а класс Scaffold.as из пакета в котором лежат ваши классы страниц.
Вы можете также убрать вызовы super.transitionIn() и super.transitionOut() в AS2 или AS3, если хотите.
Файл preload.fla содержит PreloaderScaffold символ в библиотеке. Он связан с классом PreloaderScaffold.as в папке с пакетом созданных файлов. Если хотите, вы можете удалить этот символ и библиотеки и ассоциированный класс после того как создадите собственный прелоадер. Большинство разработчиков использует PreloaderScaffold как исходник, так что можете использовать его себе на здоровье.
*** Убедитесь, что вы опубликуете файлы страниц еще раз после удаления файлов и кода Scaffolding***
Метки: actionscript, as2, as3, flash, framework, gaia, scuffolding, документация