如何访问动态创建的动画片段/对象的方法?
为简单起见,我没有发布关于如何动态创建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/
答案 0 :(得分:1)
我想你会得到你正在等待的结果。
实际上,在执行“temp.testReturn”时,您没有调用该函数。您需要添加括号才能进行实际调用。
当你追踪temp.testReturn时,该函数不会被执行:trace函数告诉你temp.testReturn的类型,这里正确地返回为“函数”类型。
答案 1 :(得分:1)
函数引用和函数调用之间存在差异。括号'()'是ActionScript的操作符号。他们告诉编译器“请试着打电话给我们后面的东西”。或者至少我希望他们有礼貌。
ActionScript中的函数是一个对象,就像所有其他东西一样。 Function类的成员。你可以来回传递它的参考,你甚至可以调用它的方法,如call()或apply()。
如果您想要一个电话,而不是一个参考,您必须使用呼叫运营商。
迹(temp.testReturn());
编辑我在打字时接受了答案,对不起答复。