2012-04-28 14 views
0

私がFlashゲーム用に持っているいくつかのムービークリップには、作成したカスタムビルドカメラを制御する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

関連する問題