Actionscript 3 星号型变量

Actionscript 3 星号型变量,actionscript-3,movieclip,Actionscript 3,Movieclip,抱歉,如果这个问题有点站不住脚,但我开始想知道,这个星号和代码段是什么意思?星号表示变量类型未定义,或者是通配符。 这意味着您可以将test定义为任何类型的变量。回答您的原始问题和您在评论中提出的问题: 星号是一个通配符,表示变量将接受任何类型的信息。例如: var test:*; test = sMC // Some movieClip exported for ActionScript var f = new test; 所有这些都将起作用 var thing:MovieClip = "h

抱歉,如果这个问题有点站不住脚,但我开始想知道,这个星号和代码段是什么意思?

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

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

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

var test:*;
test = sMC // Some movieClip exported for ActionScript
var f = new test;
所有这些都将起作用

var thing:MovieClip = "hello";
变量的类型应尽可能严格;我的意思是,当您想要将MovieClip分配给变量时,您的变量应该被类型化为MovieClip。像这样:

var wildcard:*;

wildcard = "hello";
wildcard = 10;
wildcard = new 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);
}
这对任何事情都有效。如果您创建自己的类,则将其用作保存类的变量的类型

var mc:MovieClip = new MovieClip();
如果尝试将不相关的类型分配给变量,则会引发错误,如下所示:

var thing:MyClass = new MyClass();
但只要您的变量类型位于分配给它的继承链的某个位置,那么它就会工作

var thing:MovieClip = "hello";
如果您想要循环一个数组,其中包含扩展MovieClip的您自己的类的分类,那么这将非常方便

var thing:DisplayObject = new MovieClip();
总的来说,建议不要使用通配符类型。在最坏的情况下,使用
对象
,因为flash中的一切都扩展了这一点。通配符或对象可能有用的一种情况是,如果您希望创建一个可以接受任何类型数据的函数。像这样:

var wildcard:*;

wildcard = "hello";
wildcard = 10;
wildcard = new 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);
}


希望这一切都有意义。

所以这不是电影唇的专属吗?如果是这样的话,这是我将变量分配给movieClip的唯一方法吗?sMC是MovieClip的名称…您应该能够将其分配给
类的类型。我相对确信它会起作用。So
var检验:类