AS3 as vs Class()

时间:2011-10-04 04:55:57

标签: actionscript-3 class casting

我不完全理解这个示例中这两种类型转换方法之间的优缺点:

for each(var i:DisplayObject in _display)
{
    trace(i as Sprite);
    trace(Sprite(i));
}

对此有什么建议吗?我总是像Class()一样包裹在后一个示例中,但as有时会更容易阅读。

2 个答案:

答案 0 :(得分:6)

根据我的理解,差异是TypeError

var o:Object = "test";

trace( o as MovieClip ); // displays: null
trace ( MovieClip ( o ) ); // generates a TypeError

http://archive.darronschall.com/weblog/2006/02/actionscript-3-casting.html

答案 1 :(得分:0)

我总是使用as,因为当你使用Class(引用)时,某些类会有意想不到的结果。例如

var arr:Array = [1, 2, 3];

var arr2:Array = Array(arr);

arr2现在是[[1,2,3]]

当arr和arr2一起定义时,这是相当明显的,但是当arr在其他地方定义而你不知道它是否包含数组时,你可以使用Array(arr)语法获得错误。