AS3访问动态创建的动画片段的方法

时间:2011-06-28 21:07:30

标签: actionscript-3 dynamic movieclip

如何访问动态创建的动画片段/对象的方法?

为简单起见,我没有发布关于如何动态创建movieclip的代码。相反,假设它已经创建。这是一个对象。它被称为field_2。下面是使用getChildByName('field_'+ field.id);

引用的

Check_box_component.as

public var testVar:String = 'test';   

public function testReturn()
{
    return 'value returned';
}

Main.as

var temp:MovieClip = MovieClip(getChildByName('field_' + field.id));
trace(temp);
trace(temp.testReturn);
trace(temp.testVar);

输出:

[object Check_box_component]
function Function() {}
test

当我追踪 temp.testReturn 时,为什么它会显示“ function Function(){} ”而不是“ value returns ”?

以下链接帮我解决了这个问题。

http://curtismorley.com/2007/06/13/flash-cs3-flex-2-as3-error-1119/

2 个答案:

答案 0 :(得分:1)

你尝试过: 迹(temp.testReturn()); ......而不是你的 跟踪(temp.testReturn); ......?

我想你会得到你正在等待的结果。

实际上,在执行“temp.testReturn”时,您没有调用该函数。您需要添加括号才能进行实际调用。

当你追踪temp.testReturn时,该函数不会被执行:trace函数告诉你temp.testReturn的类型,这里正确地返回为“函数”类型。

答案 1 :(得分:1)

函数引用和函数调用之间存在差异。括号'()'是ActionScript的操作符号。他们告诉编译器“请试着打电话给我们后面的东西”。或者至少我希望他们有礼貌。

ActionScript中的函数是一个对象,就像所有其他东西一样。 Function类的成员。你可以来回传递它的参考,你甚至可以调用它的方法,如call()或apply()。

如果您想要一个电话,而不是一个参考,您必须使用呼叫运营商。

迹(temp.testReturn());

编辑我在打字时接受了答案,对不起答复。