Оператор ActionScript как - PullRequest
       32

Оператор ActionScript как

0 голосов
/ 21 февраля 2011

У кого-нибудь есть хорошее объяснение оператора как ?

С одной стороны, мне кажется, что часто лучше использовать в качестве вместо создания нового объекта.

Но тогда бывают ситуации, когда этот оператор подводит меня. Например, при загрузке текстового файла в формате XML через URLLoader :

private function completeHandler(event:Event):void {
    var loader:URLLoader = URLLoader(event.target);
    trace("completeHandler: " + loader.data);

    var x:XML = new XML(loader.data);
    trace("x=" + x);
}

Почему я должен использовать конструктор здесь? Почему я не могу сказать var x: XML = loader.data как XML; и сохранить немного памяти?

Спасибо за любые идеи! Alex

1 Ответ

4 голосов
/ 21 февраля 2011

as определяет, является ли тип переменной суперклассом или подклассом другого класса.Это не создает новый объект.Отличие от is состоит в том, что, в то время как is возвращает логическое значение, as возвращает либо объект нужного типа, либо null.Он используется для приведений типов.

См. Документацию ActionScript .

Типичным вариантом использования может быть использование MovieClip на сцене, которое получается по имени экземпляра:

// This will not compile:
var d:DisplayObject = stage.getChildByName ("instance1"); 
d.gotoAndPlay (2);

// This will play the MovieClip from frame 2
var m : MovieClip = stage.getChildByName ("instance1") as MovieClip;
m.gotoAndPlay (2); 

stage.getChildByName() всегда возвращает DisplayObject, независимо от того, действительно ли это MovieClip, Sprite, Button и т. Д. Поэтому, если вы хотите использовать какой-либо из методов класса MovieClip, вам сначала нужно набрать приведение к MovieClip,Это, однако, не создает новый MovieClip, а просто гарантирует, что вы используете правильный тип.

...