var test:*;
test = sMC // Some movieClip exported for ActionScript
var f = new test;
对不起,如果问题有点跛脚,但我开始怀疑,这是星号,这是什么意思?变量类型星号
var test:*;
test = sMC // Some movieClip exported for ActionScript
var f = new test;
对不起,如果问题有点跛脚,但我开始怀疑,这是星号,这是什么意思?变量类型星号
星号表示变量类型未定义,或通配符。 含义您可以将test
定义为任何类型的变量。
回答你原来的问题,你的问题在评论问:
星号是一个通配符,这意味着该变量将接受任何类型的信息的。例如:
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
,因为闪存中的所有内容都可以扩展。通配符或对象可能有用的一种情况是,如果您想创建一个可以接受任何类型数据的函数。像这样:
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);
}
希望这一切是很有意义的。
因此它不是排他性的影片剪辑?如果是这样,这是我给MovieClip分配一个变量的唯一方法吗? sMC是MovieClip的名称... – Rek 2011-05-16 07:04:31
您应该可以将它分配给一种'Class'类型。我相对确定它会起作用。所以'var test:Class;' – stormbreaker 2011-05-16 07:16:29