Actionscript 3 AS3未定义函数#1006
我有一个名为“main.as”的父类。我试图让子类调用main的函数。它们都位于同一文件夹中Actionscript 3 AS3未定义函数#1006,actionscript-3,import,Actionscript 3,Import,我有一个名为“main.as”的父类。我试图让子类调用main的函数。它们都位于同一文件夹中 // main.as // package { public class main extends MovieClip { public function main() { var child:child_mc = new child_mc(this); } public function callFunction():void { trace(
// main.as //
package {
public class main extends MovieClip {
public function main() {
var child:child_mc = new child_mc(this);
}
public function callFunction():void {
trace("Done it");
}
}
}
这就是我一直遇到的错误:
TypeError: Error #1006: callFunction is not a function.
所以我试着做这样的追踪
trace(main.callFunction);
它说的是未定义的。有人能告诉我我错过了什么吗。我有这种感觉,这是我忽略的一件非常基本的事情 您的“子”包定义为“主”。我甚至不知道它是如何运行的,更不用说运行到显示您收到的错误消息的程度了
我相信下面的代码应该满足您的期望
(我还冒昧地重命名了要使用的类(带有首字母大写),以遵循最佳实践,并更容易区分变量名。)
Main.as
package {
public class Main extends MovieClip {
public function Main() {
var child:ChildMC = new ChildMC();
child.main = this;
}
public function callFunction():void {
trace("Done it");
}
}
}
编辑:我刚才看到你的评论,指出child\u mc
是库中的电影剪辑。我猜child
类被设置为child\u mc
的基类
如果是这样,则无法通过实例化器传递属性,需要找到另一种方法将主类的实例传递给子类
一种方法是添加setter,如下所示:
Child.as(ChildMC的基类)
似乎你不需要
importmain代码>,请尝试删除itI。我仍然收到相同的错误。我认为导入它将有助于识别该功能。因此,是否可以向我们展示更多您的代码?类定义等都做了更改。child_mc是一部图书馆电影剪辑顺便说一句。鉴于看到child_mc
是一部图书馆电影剪辑,更新了答案。是的,是打字错误。我改变了我所有的类名,因为它又长又复杂,我想让它更容易阅读。谢谢你的帮助!
package {
public class Main extends MovieClip {
public function Main() {
var child:ChildMC = new ChildMC();
child.main = this;
}
public function callFunction():void {
trace("Done it");
}
}
}
package {
public class Child extends MovieClip {
private var _main:Main;
public function Child() {
}
public function set main(main:Main):void {
this._main = main;
this._main.callFunction();
}
}
}