变量类型星号

时间:2011-05-16 07:00:21

标签: actionscript-3 movieclip

var test:*;
test = sMC // Some movieClip exported for ActionScript
var f = new test;

很抱歉,如果这个问题有点蹩脚,但我开始怀疑,这个星号是什么,这个片段是什么意思?

2 个答案:

答案 0 :(得分:1)

在评论中回答您的原始问题和问题:

星号是一个通配符,表示该变量将接受任何类型的信息。例如:

var wildcard:*;

wildcard = "hello";
wildcard = 10;
wildcard = new MovieClip();

以上所有都可行。

应尽可能严格地输入变量;我的意思是,当你想将一个MovieClip分配给一个变量时,你的变量应该被输入一个MovieClip。像这样:

var mc:MovieClip = new MovieClip();

这适用于任何事情。如果您创建自己的类,则将其用作保存类的变量的类型。

var thing:MyClass = new MyClass();

如果您尝试将不相关的类型分配给变量,则会引发错误,如下所示:

var thing:MovieClip = "hello";

但只要您的变量类型位于您分配给它的继承链的某个位置,那么它就可以工作。

var thing:DisplayObject = new MovieClip();

如果你想循环一个包含各种各样的扩展MovieClip的类的数组,这可能很方便。

var ar:Array = [];

/**
 * MyClass extends MovieClip
 * MyOtherClass extends MovieClip
 */

ar.push(new MyClass());
ar.push(new MovieClip());
ar.push(new MyOtherClass());

var i:MovieClip;
for each(i in ar)
{
    trace(i);
}

总体而言,通配符类型不是推荐。最坏的情况是使用Object,因为flash中的所有内容都会扩展它。通配符或对象可能有用的一种情况是,如果要创建可以接受任何类型数据的函数。像这样:

var myarray:Array = [];

function addToArray(data:Object):void
{
    myarray[myarray.length] = data;
    trace(data);
}

OR

function addToArray(data:*):void
{
    myarray[myarray.length] = data;
    trace(data);
}

希望这一切都有意义。

答案 1 :(得分:0)

星号表示变量类型未定义或通配符。 这意味着您可以将test定义为任何类型的变量。