2014-01-13 4 views
0

'main.as'라는 상위 클래스가 있습니다. 자식 클래스가 main 함수를 호출하도록하려고합니다. 둘 다 같은 폴더에 있습니다.AS3 undefined function # 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"); 
    } 

    } 
} 

.

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

그래서 난이

trace(main.callFunction); 

같은 추적을하고 시도하고 정의되지 않은 말한다 :

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

    } 
} 

내가지고있어 오류입니다. 누군가 내가 누락 된 것을 말해 줄 수 있습니까? 나는이 느낌을 내가 간과 해 왔던 아주 기본적인 것!

+0

이 보인다 import main;', 제거하려고 시도합니다. – 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 클래스가 설정되어 있다고 생각하십니까?

그렇다면 인스턴스 생성자를 통해 속성을 전달할 수 없으므로 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'가 Library MovieClip이라는 관점에서 업데이트되었습니다. –

+0

예, 오타였습니다. 길고 복잡하기 때문에 클래스 이름을 모두 바 꾸었습니다. 읽기가 더 쉬워지기를 바랍니다. 도와 주셔서 감사합니다! – user1234567

관련 문제