2014-01-13 103 views
0

我有一个名为'main.as'的父类。我试图让子类调用main的函数。他们都在同一个文件夹中。AS3未定义函数#1006

// 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"); 
    } 

    } 
} 

// child.as // 
package { 
    import main; 

    public class child extends MovieClip { 

    private var main:MovieClip = new MovieClip(); 

    public function child(main:MovieClip):void { 
     this.main = main; 
     main.callFunction(); 
    } 

    } 
} 

这是我一直得到的错误:

TypeError: Error #1006: callFunction is not a function. 

所以我尝试做一个跟踪这样

trace(main.callFunction); 

和它说不确定。有人能告诉我我错过了什么吗?我觉得这是我忽视的一个非常基本的东西!

+0

好像你不需要'导入主;',尝试删除它 – Cherniv

+0

我仍然收到相同的错误。我认为导入它将有助于识别该功能。 – user1234567

+0

那么可能会向我们展示更多的代码?类定义等 – Cherniv

回答

1

你的“孩子”包被定义为“主”。我甚至不知道它是如何遵守的,更不用说运行到显示错误信息的地步了。

我相信下面的代码应该做你的预期。

(我也冒昧地重命名类使用CamelCase(与首字母大写)坚持最佳实践,更容易区分的变量名。)

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_mc是库中的影片剪辑。我想那child类被设置为child_mc的基类?

如果是这样,您不能通过实例化程序传递属性,您需要找到另一种方法将Main类的实例传递给Child类。

一种方法是增加一个二传手,如下所示:

Child.as(基类ChildMC)

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(); 
     } 

    } 
} 
+0

根据看到'child_mc'是库影片剪辑的更新回答。 –

+0

是的,这是一个错字。我改变了我所有的班级名称,因为它很长很复杂,我希望这可以更容易阅读。谢谢您的帮助! – user1234567