|
|
|||||
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
95. Flash 9: Strict Mode
Во Flash 9 добавлен новый пункт настройки ActionScript 3, называется "strict mode" (расположен: Edit > Preferences > ActionScript > ActionScript 3.0 settings... > Strict mode). Если strict mode включен, то компилятор более строго проверяет код, особенно соответствие типов, и не создает SWF даже при незначительных ошибках. К примеру, свойство "constructor" класса Object не определено в самом классе, а только в прототипе. Поэтому, если попытаться обратиться к этому свойству в не динамическом классе в strict mode, компилятор выдаст ошибку. Пробуем:
Компиляция: **Error** Scene 1, Layer 'Layer 1', Frame 1 : Line 2, Column 16 : [Compiler] Error #1119: Access of possibly undefined property constructor through a reference with static type flash.display:Sprite. trace(mySprite.constructor); ReferenceError: Error #1065: Variable Timeline0_9f132e9d986cc749b16415211316a5f0 is not defined. |
|
|||||
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
96. System.totalMemory
В классе System (flash.system.System) есть новое интересное свойство totalMemory (flash.system.System.totalMemory), которое показывает сколько байт памяти использует Flash-плеер в данный момент. Например:
Или более «объемный» класс: |
|
|||||
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
64. XML и XMLList
Работая с XML в ActionScript 3 вы в основном имеете дело с двумя объектами: XML (Top level XML) и XMLList (Top level XMLList). Существенная разница между ними в том, что XML – это один элемент XML-дерева, например узел (который может содержать произвольное количество вложенных узлов), а XMLList массив элементов (1 или более).
В первом примере есть один корневой узел и это будет представлено как XML объект. Во втором примере список узлов, это уже будет XMLList. В отличие от старого XML объекта из предыдущих версий ActionScript (который теперь XMLDocument), новые XML и XMLList могут представлять из себя не только узлы XML дерева (nodes), но и другие значения, например атрибуты: var myXML:XML = <foo> <foo bar="bar1" /> <foo bar="bar2" /> <foo bar="bar3" /> </foo>; trace(myXML.foo.@bar.toXMLString()); /* Output: bar1 bar2 bar3 */ trace(myXML.foo.@bar is XMLList); // true Для того чтобы получить XML объект, нужно из возвращаемого массива взять первый элемент: Аналогичная ситуация и с вложенными узлами XML: |
|
|||||
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
98. Класс Timer
В ActionScript 3 введен новый класс Timer (flash.utils.Timer), который заменяет устаревшую функцию setInterval (flash.utils.setInterval()), хоть setInterval пока и оставлена, использовать ее не рекомендуется. В отличие от setInterval класс Timer рассылает события (flash.events.TimerEvent), а значит на один таймер можно навесить сколько угодно обработчиков. Кроме того, Timer дает возможность контролировать сколько раз должен сработать таймер.
Пример: var timer:Timer = new Timer(500, 10); timer.addEventListener(TimerEvent.TIMER, notifier); timer.addEventListener(TimerEvent.TIMER, stopper); stage.addEventListener(MouseEvent.CLICK, continuer); function notifier(event:TimerEvent):void { trace(timer.currentCount); } function stopper(event:TimerEvent):void { switch (timer.currentCount) { case 5: timer.stop(); break; case timer.repeatCount: timer.reset(); break; } } function continuer(event:MouseEvent):void { timer.start(); } timer.start(); Результат выполнения: |
|
|||||
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
99. Взаимодействие между AVM2 (AS3) и AVM1 (AS2/AS1) через LocalConnection
Код ActionScript выполняется во flash-плеере в специальной «виртуальной машине», для ActionScript 1 и 2 это была AVM1, для ActionScript 3 была разработана новая AVM2. Нет возможности напрямую взаимодействовать между программами выполняющимся в разных виртуальных машинах, поскольку они несовместимы. К примеру, если в мувик созданный на ActionScript 3 загрузить внешний мувик из ActionScript 1 или 2, то не удастся напрямую управлять им: запустить, остановить, вызвать функцию, считать значение свойства и т.п.
Но можно создать специальный канал для взаимодействия при помощи LocalConnection, используя:Пример: // файл на ActionScript 2: AS2animation.fla // на timeline размещен один мувиклип названный animation_mc //Устанавливаем local connection для получения команд извне var AVM_lc:LocalConnection = new LocalConnection(); // обработчик события stopAnimation AVM_lc.stopAnimation = function(){ animation_mc.stop(); } // слушаем события по каналу "AVM2toAVM1" AVM_lc.connect("AVM2toAVM1"); // Файл на ActionScript 3: AS3Loader.fla // local connection для взаимодействия с мувиклипом в AVM1 var AVM_lc:LocalConnection = new LocalConnection(); // загружаем внешнюю SWF AVM1 var loader:Loader = new Loader(); loader.load(new URLRequest("AS2animation.swf")); addChild(loader); // при клике мышкой по загруженному мувиклипу вызывается stopPlayback loader.addEventListener(MouseEvent.CLICK, stopPlayback); function stopPlayback(event:MouseEvent):void { // вызывается stopAnimation по каналу "AVM2toAVM1" AVM_lc.send("AVM2toAVM1", "stopAnimation"); } |
|
|||||
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
100. Класс ByteArray
В ActionScript 3 добавлена возможность работать с бинарными данными, используя класс ByteArray (flash.utils.ByteArray). Класс ByteArray наследуется от массива Array (Top level Array) и может содержать в себе байты любой бинарной информации, аналогично тому, как она размещена в памяти компьютера. Работать с классом довольно просто, поэтому лучше посмотреть примеры, что можно с его помощью сделать:
|
|
|||||
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
В аттаче все советы в html формате (можно добавить на свой сайт)
|
|
|||||
Регистрация: Dec 2007
Сообщений: 2
|
Подскажите, пожалуйста, как временно запомнить только что нарисованную картинку для последующего ее изменения в movie clip (например, заставить вращаться)
|
|
|||||
Я вот думаю — а что, если весь материал загнать в один файл (PDF?), чтобы печатать хорошо было?
__________________
//Фотрошитель |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Цитата:
А pdf-кой, я думаю, будет очень неплохо. |
Часовой пояс GMT +4, время: 07:30. |
|
« Предыдущая тема | Следующая тема » |
|
|