Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Статьи (http://www.flasher.ru/forum/forumdisplay.php?f=101)
-   -   ActionScript 3 Tips and Tricks (http://www.flasher.ru/forum/showthread.php?t=85645)

MerlinTwi 02.10.2006 14:17

28. Запись XML в тексте скрипта
 
В ActionScript 3 можно писать XML прямо в тексте скрипта, больше нет необходимости записывать XML в виде строки с последующим парсингом. Компилятор Flash проверяет синтаксис XML, что спасает от опечаток.
Код:

var myXml:XML =
        <body>
            <!-- comment -->
            text1
            <a>
                <b>text2</b>
            </a>
        </body>;


MerlinTwi 04.10.2006 12:45

29. Определение имени класса
 
В ActionScript 3 есть новая функция getQualifiedClassName (flash.utils.getQualifiedClassName) с помощью которой можно запросто узнать имя класса:
Код:

var sprite:Sprite = new Sprite();
trace(getQualifiedClassName(sprite)); // "flash.display::Sprite"

Можно узнать и название предка (superclass)
Код:

trace(getQualifiedSuperclassName(sprite)); // "flash.display::DisplayObjectContainer"
Для обратного преобразования названия в класс можно использовать функцию getDefinitionByName (flash.utils.getDefinitionByName)
Код:

trace(getDefinitionByName("flash.display::Sprite")); // [class Sprite]
Для получения детальной информации о классе в виде XML используйте describeType() (flash.utils.describeType)
Код:

var sprite:Sprite = new Sprite();
var spriteDescription:XML = describeType(sprite);
trace (spriteDescription);


MerlinTwi 04.10.2006 12:55

30. Вызов super()
 
В ActionScript 2, вызвать super() можно было только в самом начале конструктора класса, иначе компилятор сообщит об ошибке «The superconstructor must be called first in the constructor body». В ActionScript 3, super можно вызывать в любом месте конструктора.
Код:

package {
    public class SubClass extends SuperClass {
        protected var value:int;
        public function SubClass(value:int = 0) {
            this.value = value;
            super(20);
        }
    }
}


MerlinTwi 04.10.2006 13:11

31. Определение метки текущего фрейма (Frame Label)
 
В класс MovieClip (flash.display.MovieClip) добавлены новые методы для работы с метками фреймов: currentLabels и currentLabel.
currentLabels - это массив всех меток FrameLabel (flash.display.FrameLabel) которые есть на timeline в мувиклипе. Каждый FrameLabel содержит два свойства: name:String – название метки, и frame:int – номер фрейма.
currentLabel - возвращает название метки текущего фрейма.
Код:

var label:String = my_mc.currentLabel;

MerlinTwi 04.10.2006 13:15

32. Несколько аргументов в trace()
 
В ActionScript 3, функции trace можно передавать любое количество аргументов, все они будут выведены в Output panel.
Код:

trace(value1, value2, value3);
P.S. В AS1 и AS2 аналогичного эффекта можно добиться используя массив:
Код:

trace([value1, value2, value3]);

MerlinTwi 04.10.2006 13:21

33. Вызов обработчика события без события
 
Обработчик события в ActionScript 3 должен получать один аргумент класса Event. Если же нужно самостоятельно вызывать функцию обработчика события, можно написать так:
Код:

myHandler(new Event(someEventType));
Что длинно и создает пустое ненужное событие, гораздо проще и удобнее в обработчике события присвоить дефолтное значение аргументу:
Код:

public function myHandler(event:Event = null):void {...}
...
// обычный вызов без события
myHandler();


MerlinTwi 04.10.2006 13:32

34. URLRequest вместо строки URL
 
Классы и функции работающие с URL в ActionScript 3 используют класс URLRequest (flash.net.URLRequest), который кроме самой строки URL, содержит дополнительные свойства, более детально описывающие способ запроса:
  • contentType:String
  • data:Object
  • method:String
  • requestHeaders:Array
  • url:String
Например, для вызова navigateToURL() (flash.net.navigateToURL) (эта функция заменяет getURL() из предыдущих версий ActionScript) в качестве аргумента нужно передать экземпляр класса URLRequest:
Код:

var request:URLRequest = new URLRequest("http://www.adobe.com/");
navigateToURL(request);


etc 04.10.2006 15:12

Цитата:

Сообщение от MerlinTwi
name:int – название метки, и frame:String – номер фрейма.

Ошибся типом данных

MerlinTwi 05.10.2006 20:46

XML или XMLDocument
 
В ActionScript 3 работа с XML приведена к стандарту E4X - ECMAScript's XML specification. Этот подход обеспечивает более удобные методы работы с узлами и атрибутами XML дерева. Все методы собраны в новом классе XML (top level XML)
Код:

var myXML:XML = new XML(objectToConvert);
Код:

var myXML:XML = <node />;
Прежний XML класс, такой каким он был в ActionScript 1 и 2, так же остался, просто переименован в XMLDocument (flash.xml.XMLDocument). Если хотите работать с XML по старинке, то используйте XMLDocument вместо XML.
Код:

var myXML:XMLDocument = new XMLDocument("<node />");

MerlinTwi 05.10.2006 21:02

36. Загрузка текста и XML с использованием URLLoader
 
В предыдущих версиях ActionScript для загрузки внешнего текста использовали LoadVars или XML. В ActionScript 3 все собрано в один класс URLLoader (flash.net.URLLoader), который немного похож на прежний LoadVars. Из класса XML убрана функция по загрузки, теперь нужно загружать текст при помощи URLLoader, а затем передавать XML классу для преобразования.
Для начала загрузки нужно использовать метод load(), который получает один параметр URLRequest (это не просто строка URL!). Далее следует использовать события, для того, чтобы узнать об окончании загрузки или ошибке. Когда текст загружен, он сохраняется в свойстве data.
Пример:
Код:

var loader:URLLoader;
// ...
loader = new URLLoader();
loader.addEventListener(Event.COMPLETE, xmlLoaded);

var request:URLRequest = new URLRequest("file.xml");
loader.load(request);
//...
function xmlLoaded(event:Event):void {
    var myXML:XML = new XML(loader.data);
    //...
}



Часовой пояс GMT +4, время: 19:56.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.