2010-04-13 3 views
0

메인 클래스 스테이지에서 이벤트 리스너를 제거하고 싶었지만 오류가 발생했습니다 1120: Access of undefined property stage. 어떻게 스테이지에 실제로 액세스합니까?메인 클래스 스테이지 이벤트 리스너에 액세스

정의 클래스 :

import main; 
main.disableVcam(); 

메인 클래스 :

오브젝트가 표시 스테이지 아니라면
public static function disableVcam():void { 
      trace("disable"); 
      stage.removeEventListener(MouseEvent.MOUSE_MOVE, movevC); 
     } 

답변

0

상기 stage 오브젝트가 정의된다 (또는 널). stage 개체가 값을 가지려면 addChild 개체가 있어야합니다.

편집 : 아마 당신이 이벤트 처리기에서 처리 할 수 ​​있습니까?

protected function clickHandler(e :Event) :void { 
    if (e.target.stage) { 
     e.target.stage.removeEventListener(...); 
    } 
} 

Edit2가 : 자신의 메인 급의 경우

public class Main { 
    static private var instance :Main; 

    static public function getInstance() :Main { 
     if (Main.instance == undefined) { 
      Main.instance = new Main(); 
     } 

     return Main.instance; 
    } 

    // The rest of the class goes here 
} 


// snip 

import Main; 

public static function disableVcam():void { 
    trace("disable"); 
    Main.getInstance().stage.removeEventListener(MouseEvent.MOUSE_MOVE, movevC); 
} 

을 정적 방법은 그래서 당신은 자신의 메인 클래스 싱글 만들고, 이런 식으로 작업 할 수 있습니다 문제를 해결하기 위해, 무대가없는 프로젝트의 주요 클래스 인 경우 생성자에서 정적 instance 변수의 값을 할당해야합니다.

+0

Event.ADDED_TO_STAGE를 사용하여 스테이지에 추가 된 클래스가 있지만 다른 동적 클래스의 버튼이 푸시 될 때만 클래스가 호출되며 다른 클래스는 거의 레이어가없는 경우에만 클래스가 호출됩니다. trace 문만을 얻을 수는 있지만 mouseevent는 작동하지 않습니다. – Hwang

+0

아마도 이벤트 핸들러에서'event.target.stage'를 사용해보십시오. –

+0

nope. doesnt는 작동하는 것처럼 보인다. – Hwang

관련 문제