ActionScript运算符为

时间:2011-02-21 10:48:38

标签: actionscript-3 actionscript urlloader

是否有人对as运算符有很好的解释?

另一方面,在我看来,使用作为而不是实例化新对象通常会更好。

但是有些情况下,当这个操作员让我失望时。例如,通过URLLoader

加载XML格式的文本文件时
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; 并保存一些内存?

感谢您的任何见解! 亚历

1 个答案:

答案 0 :(得分:4)

as评估变量的类型是否是另一个类的超类或子类。它不会创建新对象。 isis之间的差异是as返回布尔值,null会返回所需类型的对象,或// 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); 。它用于类型转换。

请参阅ActionScript documentation

一个典型的用例是在舞台上使用MovieClip,它由实例名称

检索
stage.getChildByName()

{{1}}总是返回一个DisplayObject,无论它是否真的是MovieClip,Sprite,Button等。因此,如果你想使用任何类MovieClip的方法,你需要先输入cast到MovieClip。但是,这不会创建新的MovieClip,而只是确保您使用的是正确的类型。