1

私は本当にこの小さな問題に全力を尽くしました。2 週間の長い夜でした。より経験豊富な AS3 開発者の 1 人が 1、2 分で修正してくれることを私は知っています。

だから私はドラッグ可能なオブジェクトを使った非常に単純なゲームを持っています.MOUSEUPで手放すと、アニメーションが再生され、次に対象にぶつかり、別のアニメーション(スプラットまたは何か)が作成されます。ムービー クリップ内の 1 フレームのみで hitTest を使用します。(これはうまくいきます)

上記のeventListenerの削除に問題があります。アニメーションの最後に削除しようとしたため、アニメーションの最後からステージからremoveEventListenerを言うASがありますが、これは機能しなかったため、動的に追加した後にremoveEventListenerを試しました舞台へのアニメーション、まだ喜びはありません。

this.removeEventListener や currentTarget のような単純なものであることを望みましたが、残念ながら違います。

本当に他に思いつかなくて、

ASの愛のために助けてください。説明も素晴らしいでしょう。人々がどのように時間がないかを理解しているので、本当にどんな意見でも大歓迎です。

以下は私の AS です。誰かが FLA を見たい場合は、送信できます。共有してもかまいません。

注意:おそらく私が初心者であることは明らかなので、途中で助けてください....

import flash.display.MovieClip;

import flash.events.*;

var test:dart = new dart();
addChild(test);
circle.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToDrag);

function fl_ClickToDrag(event:MouseEvent):void
{
    circle.startDrag();
}

stage.addEventListener(MouseEvent.MOUSE_UP, fl_ReleaseToDrop);

function fl_ReleaseToDrop(event:MouseEvent):void
{
    circle.stopDrag();
    addEventListener(Event.ENTER_FRAME, checkIfHitTest);
    function checkIfHitTest(Event)
    {

        if (circle.hitTestObject(square))
        {
            trace("true, the circle and square are colliding");
            var s:blood_splat = new blood_splat();
            addChild(s);
            s.x = mouseX;
            s.y = mouseY;
            **removeEventListener(Event.ENTER_FRAME,checkIfHitTest);**

        }
        else
        {
            trace("false, the circle and square are not colliding");
            var s:blood_splat = new blood_splat();
            addChild(s);
            s.x = mouseX;
            s.y = mouseY;
            s.alpha = 0.1;
            **removeEventListener(Event.ENTER_FRAME,checkIfHitTest);**
        }
    }

}
4

2 に答える 2

1

fl_ReleaseToDropの外部でcheckIfHitTestを定義してみてください。理論的には、removeEventListenerコードもfl_ReleaseToDropのクロージャー内で実行されているため、実行した内容は機能するはずですが、そのような他の関数内で名前付き関数を定義することは想定されていないため、その定義が無視されている可能性があります。

もう1つの考えられる問題は、checkIfHitTestにClass、Eventと同じ名前の引数を指定しているため、定義が競合していることです。イベントインスタンスには定数ENTER_FRAMEがありません。

正直なところ、明らかにstrictモードがオフになっている場合や、大量のコンパイルエラーが発生している場合でも、ランタイムエラーが発生していないとは想像できません。デバッグプレーヤーはインストールされていますか?厳密な入力をオンに戻す必要があります。少なくとも、これらの問題の多くを自分で解決し始めるためのフィードバックが得られます。

于 2012-05-28T19:41:57.083 に答える
1

ただ行う:

Event.currentTarget.removeEventListener(Event.type, checkIfHitTest)
于 2012-05-28T19:39:11.683 に答える