var test:*;
test = sMC // Some movieClip exported for ActionScript
var f = new test;
很抱歉,如果这个问题有点蹩脚,但我开始怀疑,这个星号是什么,这个片段是什么意思?
答案 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
定义为任何类型的变量。