0

動的なドラッグ アンド ドロップ ゲームを作成しています。ドラッグ ドロップ コードを含むドラッグされた項目のクラスがあります。

私の問題は、ヒット テスト ステートメントで既にステージに配置したムービー クリップを呼び出す/アクセスできないことです。

これが私のコードで、target1_mc と target2_mc はステージ上の既存のムービー クリップです。

package {
 import flash.display.MovieClip;
 import flash.events.MouseEvent;
 import flash.text.TextField;




 public class recipeMC extends MovieClip {



  private var startX:Number;
  private var startY:Number;
  private var counter:Number=0;




  public function recipeMC() {
   this.mouseChildren = false;
   this.buttonMode = true;
   this.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
   this.addEventListener(MouseEvent.MOUSE_UP, dropIt);
  }
  private function pickUp(event:MouseEvent):void {
   this.startDrag(true);
   this.parent.addChild(this);
   startX = this.x;
   startY = this.y;

  }
  private function dropIt(event:MouseEvent):void {
   this.stopDrag();



   *****if (this.hitTestObject(target1_mc)
   ||this.hitTestObject(target2_mc) )***** {
    this.removeEventListener(MouseEvent.MOUSE_DOWN, pickUp);
    this.removeEventListener(MouseEvent.MOUSE_UP, dropIt);
    this.buttonMode = false;
    this.x = myTarget.x;
    this.y = myTarget.y;
    counter++;
   } else {
    //reply_txt.text = "Try Again!";
    this.x = startX;
    this.y = startY;
   }

  }
 }
}
4

1 に答える 1

1

パブリッシュ設定 -> フラッシュ -> 設定 (ボタン) に移動し、「ステージ インスタンスを自動的に宣言する」を選択する必要があります。これでうまくいくはずです。

編集

recieptMovieClip クラス内でこれを試してください。

MovieClip(root).target1_mc
MovieClip(root).target2_mc

これは入力するのが面倒なので、変数に MovieClip(root) を格納できます。movieClip が表示リストにない限り、root プロパティは存在しないことに注意してください。したがって、クラスが addChild() で追加されるまで、これは機能しません。

別の方法として、ドキュメント クラスを使用し、メイン タイムラインへの参照を静的変数に格納する方法があります。私はそれについて一度ブログ記事を書きました。見てみる

そのブログ投稿の手法を使用すると、次のようにどこからでもメイン タイムラインにアクセスできます。

Main.display.target1_mc

それが役立つことを願っています。必要に応じて、1 つまたは 2 つの例をアップロードできます。

于 2010-12-17T23:51:41.000 に答える