2012-04-28 3 views
0

Flash 게임에 사용할 수있는 몇 가지 수준의 MovieClips에는 내가 만든 맞춤형 카메라를 제어하는 ​​특정 MovieClip이 있습니다. 카메라와 MovieClip은 정확하고 부드럽게 작동합니다. 그러나 레벨이 완료되고 게임에서 제거 될 때마다 Error #1009checkCameraZoom 기능을 인식하지 못합니다. 또한이 MovieClip은 코드와 함께 동적으로 추가되는 것이 아니라 런타임 전에 라이브러리의 지정된 수준의 MovieClips에 배치됩니다. 이 오류를 수정할 수있는 방법이 있습니까?부모 무비 클립을 제거한 후에 중첩 된 무비 클립을 사용하지 않도록 설정

ZoomOutArea 등급 :

package com.engine.assetHolders 
{ 
    import com.engine.documentClass.*; 
    import flash.display.*; 
    import flash.events.*; 

    public class ZoomOutArea extends MovieClip 
    { 
     public function ZoomOutArea():void 
     { 
      this.visible = false; 
      this.addEventListener(Event.ADDED_TO_STAGE, initZoomOutArea); 
      // constructor code 
     } 
     public function initZoomOutArea(event:Event):void 
     { 
      this.addEventListener(Event.ENTER_FRAME, checkCameraZoom); 
     } 
     public function checkCameraZoom(event:Event):void 
     { 
      if (Document.getInstance != null) 
      { 
       if (this.hitTestObject(MovieClip(parent.parent).player.playerHitArea)) 
       { 
        this.hitTestZoom(0.6); 
       } 
       if (! this.hitTestObject(MovieClip(parent.parent).player.playerHitArea)) 
       { 
        this.hitTestZoom(1); 
       } 
      } 
     } 
     public function hitTestZoom(zoomLevel):Number 
     { 
      MovieClip(parent.parent).cameraScale = zoomLevel; 
      return zoomLevel; 
     } 
    } 
} 
+0

가 먼저 더미 기능을 할 수 있습니다를, 그리고 그 "더미"기능을 인식 아닌지를 참조하십시오. 그것은 상황에 약간의 명확성을 더할 수 있습니다. –

답변

1

이 무대에 추가되는 경우가 ENTER_FRAME 이벤트에 대한 클래스를 등록하지만, 당신이 등록을 취소하지 않았다. 그래서 그것이 무대에서 제거 된 후에도 계속 가고, 더 이상 parent이 없습니다. 당신은 Event.REMOVED_FROM_STAGE 또 다른 청취자를 추가 한 다음 checkCameraZoom 리스너 제거 할 수 있습니다 :

public function initZoomOutArea(event:Event):void 
    { 
     this.addEventListener(Event.ENTER_FRAME, checkCameraZoom); 
     this.addEventListener(Event.REMOVED_FROM_STAGE, onRemoved); 
    } 

    private function onRemoved(event:Event):void 
    { 
     this.removeEventListener(Event.ENTER_FRAME, checkCameraZoom); 
    } 
+0

와우,'Event.REMOVED_FROM_STAGE' 이벤트 리스너에 대해 완전히 잊어 버린 것 같습니다 ... 도움 주셔서 대단히 감사합니다! – Blaze356

관련 문제