2

MOUSE_DOWN誰かがブラウザー内でドラッグを開始し (イベントなど)、マウスをブラウザー ウィンドウの外にドラッグし、ボタンを放してからマウスをブラウザーに戻したとき、Flash から検出する正しい方法は何ですか?

例 (StackOverflow が Flash アプリケーションであると仮定):

代替テキスト http://img.skitch.com/20100531-t99mni7s8sjs8ycqe5ebyaxphm.png

ハンドラーをチェックevent.buttonDownインするという「明白な」ことを試しましたが、マウスボタンが上にあるにもかかわらず、ステップ2(上記)にあります。MOUSE_MOVEevent.buttonDowntrue

それで、マウスボタンの「実際の」状態をチェックする他の方法はありますか? または、この状況を処理する他の方法はありますか?

4

3 に答える 3

2

Flex のソースを少し調べたところ、SandboxMouseEvent.MOUSE_UP_SOMEWHEREイベントを使用しているようです。一部の限定的なテストでは、これが Flash 以外でのマウスアップを正しく検出する 1 つの方法であることが示唆されています (Flex を使用していますが)。

var sbroot:DisplayObject = Application.application.systemManager.getSandboxRoot();
sbroot.addEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, handleDragComplete);
于 2010-05-31T17:08:32.550 に答える
1

同様の問題がありました。私の解決策:

ドラッグ可能なオブジェクト コンストラクターには、次のものがあります。

addEventListener(MouseEvent.MOUSE_DOWN, onStartDrag);

そして、 onStartDrag() に次のように置きます。

stage.addEventListener(MouseEvent.MOUSE_MOVE,onDrag);
stage.addEventListener(MouseEvent.MOUSE_UP, onDrop);

Flash Player の外側でマウスが移動するたびに通知を受け取り、マウス ポインターの位置に関係なく、ボタンが離されるとすぐに MOUSE_UP 通知を受け取ります。あなたの特定の状況には当てはまらないかもしれませんが、私にとっては魅力的です。onDrop() で MOVE および UP リスナーを削除することを忘れないでください。

于 2010-06-01T12:22:00.553 に答える
0

マウスが作業領域から離れている場合は、次を試してください。MouseEvent.MOUSE_OUT

MOUSE_UPマウスが引き戻された場合に検出できる場合があります。

Flash アプリ外でのマウスの動作は、オペレーティング システムとブラウザーに完全に依存しており、Flash 内でのマウスへのアクセスはせいぜい一貫性がありません。

于 2010-05-31T14:30:21.247 に答える