是否有人对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; 并保存一些内存?
感谢您的任何见解! 亚历
答案 0 :(得分:4)
as
评估变量的类型是否是另一个类的超类或子类。它不会创建新对象。 is
与is
之间的差异是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,而只是确保您使用的是正确的类型。