1

原因がわからない異常な動作が発生しています。これを実行すると、swf 領域内を移動すると、マウスの移動で正常にトレースされます。期待される。

しかし、画面上の任意の場所をクリックすると、移動イベントがトレースされます。クリックしてドラッグすると、ブラウザーの swf 領域内を移動しているかのようにトレースされます。

これがコードです。私はそれをベアボーンに単純化しました。「Engine」と呼ばれるFlexの空のAS3プロジェクトにこれを入れるだけです-明らかに引用符はありません。

package {
import flash.display.Sprite;
import flash.events.MouseEvent;

[SWF(width='640', height='360', backgroundColor='#888888', frameRate='31')]
public class Engine extends Sprite
{       
    public function Engine()
    {
        // Add the mouse handlers
        stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
    }

    public function mouseMoveHandler(evt:MouseEvent):void
    {
        trace("move");
    }
}
}

回避策として、MOUSE_MOVE を 1 つの MOUSE_OVER に追加し、MOUSE_OUT で削除しました。しかし、この動作は依然として非常に異常なようであり、なぜそれが起こっているのかを理解することに興味があります.

イベントをアプリケーションの実際の段階に制限する方法を誰か教えてもらえますか?

4

3 に答える 3

1

既に述べたように、これらのイベントの発生を止めることはできません。マウスを放すまでトリガーされます。

できることは、MouseEvent の座標をステージの境界と比較し、外側のものを無視することです。

public function mouseMoveHandler(evt:MouseEvent):void
{
    if (evt.stageX >= 0 && evt.stageX <= stage.stageWidth &&
        evt.stageY >= 0 && evt.stageY <= stage.stageHeight)
    {
        trace("move");
    }
}
于 2009-05-31T09:57:25.097 に答える
0

OK、これは Mac でのみ発生する既知のバグです。

ここに修正があります:

http://www.visible-form.com/blog/transformmanager-fix-for-mac-firefox/

于 2009-06-16T11:43:27.523 に答える
0

Flash ムービーの内側をクリックしてマウスを外側にドラッグすると、マウスを離すまで MOUSE_MOVE イベントがトリガーされ続けます。MOUSE_LEAVE は、プレーヤーの外でマウスを離したときにのみトリガーされます。これが Flash Player の仕組みです。

間違っているかもしれませんが、この行動を変えることはできないと思います。

于 2009-05-31T09:03:15.627 に答える