![]() |
Дополнение к заметке про абстрактные классы. Для создания своего абстрактного класса, можно использовать такой код:
Код:
package { |
37. Оператор is вместо instanceof
В ActionScript 3 введен новый оператор “is” (is operator) для проверки принадлежности экземпляра класса к типу класса или интерфейса.
Код:
var mySprite:Sprite = new Sprite();1. поскольку, AS3 классы воссоздают цепочку прототипов, то с помощью instanceof теоретически можно проверить принадлежность экземпляра класса к определенному типу AS3 класса, но не к интерфейсу: Код:
var mySprite:Sprite = new Sprite();Код:
var AS1StyleClass:Function = function(){}The instanceof operator is deprecated, use the is operator instead. |
38. Timelines как класс
Во Flash 9 вы можете ассоциировать timeline с классом, в том числе и рутовый. Timeline мувиклипа ассоциируется с классом так же как и в ActionScript 2 используя диалог linkage. Timeline рута может быть ассоциирован с классом в диалоге property inspector или в настройках публикации (publish settings - ActionScript settings).
Если вы написали код внутри фрейма в timeline, то он будет автоматически преобразован в класс. При этом переменные объявленные внутри какого-либо фрейма становятся свойствами класса, а функции методами класса. Поэтому вы не сможете объявить переменную или функцию с одинаковым названием в разных фреймах. Любой скрипт внутри фрейма ассоциируются с методом, который автоматически называется, когда происходит переход на этот фрейм. Например, такой код написанный внутри фрейма: Код:
var num:Number = 1;Код:
package { |
39. Использование RegExp для проверки корректности написания email
Пример, как можно использовать регулярное выражение (Top level RegExpх) для проверки корректности написания email:
Код:
function isValidEmail(email:String):Boolean { |
41. Оператор @ для работы с атрибутами XML
В ActionScript 3 для удобства работы с XML добавлен новый оператор “@”, предназначенный для доступа к атрибутам XML, и является аналогом метода attribute (Top level XML.attribute()).
Код:
var myXML:XML = <user name="senocular" id="2867" />;Код:
var myXML:XML = <user name="senocular" id="2867" />; |
42. Распространение событий
ActionScript 3 поддерживает распространение события (event propagation) – передача одного события нескольким объектам. К примеру, в ActionScript 1 и 2 события для кнопок (такие как onPress, onRelease, …) перехваченные мувиклипом никогда не дойдут до вложенных в него мувиклипов, даже если мышкой кликнули именно по вложенному мувиклипу. Например, кликаем мышкой по мувиклипу child_mc, который вложен в parent_mc:
Код:
// AS1 и AS2Код:
// AS3 |
43. Получение спектра звука
Используя ActionScript 3 можно получить информацию о спектре проигрываемого flash-плеером в данный момент звука/музыки. Для этого можно вызывать статичный метод computeSpectrum класса SoundMixer (flash.media.SoundMixer), и в качестве параметра передать массив ByteArray, куда и будет записана информация о спектре: 256 чисел с плавающей запятой (floating-point в диапазоне -1.0 … 1.0) для левого канала и следом 256 чисел для правого канала.
Код:
// запустить проигрывание музыки |
44. Преобразование Number() больше не поддерживает восьмеричную систему
В ActionScript 1 и 2 преобразовывая строку в число, используя Number(), если строка начиналась с нуля “0”, то число интерпретировалось как восьмеричное. Если строка начиналась с “0x”, то число интерпретировалось как шестнадцатеричное:
Код:
// ActionScript 1 и 2Код:
// ActionScript 3Код:
trace(parseInt("010", 8)); // 8 |
45. Сборщик мусора (Garbage Collection)
Сборщик мусора (Garbage Collection - GC) автоматический процесс во Flash-плеере, который удаляет данные из памяти, когда они более не нужны. GC оценивает необходимость удаления по двум критериям: счетчик ссылок (reference counting) и очистка по меткам (mark and sweep)
1. Счетчик ссылок - это процесс, который следит за количеством переменных, ссылающихся на объекты в памяти. Код:
var a:Object = new Object(); //создается новый объект и новая переменная "a", которая ссылается на этот объект, счетчик ссылок = 1Код:
a=null; // счетчик ссылок стал равен 1Код:
var a:Object = new Object(); // счетчик ссылок на первый объект = 12. Очистка по меткам – это процесс, который сканирует все объекты от базового класса (root или stage) и помечает каждого, кого нашел. Все не найденные объекты недоступны и потому будут удалены. Из предыдущего примера про "a" и "b", поскольку "a" и "b" более недоступны из root они не будут помечены и будут удалены. Код:
[root] <- сканирование...MerlinTwi: Хочу обратить ваше внимание на то, что добавление обработчиков событий к объекту (или setInterval) не позволит сборщику мусора (GC) удалить этот объект, т.к. на него остаются ссылки из процессов рассылающих события. Например: Код:
init();Код:
test.removeEventListener(Event.ENTER_FRAME, handle); |
46. Мягкие ссылки
В ActionScript 3 есть две возможности поставить мягкую ссылку (Weak Reference) на объект, которая не будет учитываться счетчиком ссылок.
1. При использовании класса Dictionary его конструктору можно передать параметр true, чтобы использовались мягкие ссылки на объекты. Код:
var dict:Dictionary = new Dictionary(true); // использовать мягкие ссылкиКод:
var obj:Object = new Object();Код:
// addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void Код:
init();Экспериментально был найден способ заставить сборщик мусора сработать немедленно, нужно создать много объектов для которых потребуется выделение большого куска памяти. Подтолкнем таким способом сборщик мусора сработать по клику мышки: Код:
init();. . . enterFrame enterFrame enterFrame run GC После клика мышки и запуска функции immediatelyGC, сборщик мусора удалил спрайт из памяти и более функция handle не вызывается. |
| Часовой пояс GMT +4, время: 03:10. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.