2

互いに関係のない 2 つの別個のイベントがあり、それぞれが Mouseclick および Doubleclick イベント応答にそれぞれ関連付けられています。ただし、実行時にダブルクリックしても、Mouseclick アクションがアクティブになることがわかりました。

私は、Mouseclick と Doubleclick が互いに独立して共存できる実行可能なソリューションを見つけようとしていますが、今のところうまくいきません。マウスクリックイベント応答を開始する前に数ミリ秒待機させてみましたが (ユーザーがダブルクリックする機会を与えるため)、これも最も効率的な解決策ではありません。

誰にもアイデアはありますか?または、Mouseclick および Doubleclick イベント応答がフラッシュでどのようにキャプチャされるかをよりよく理解できる場所を教えてもらえますか?

私は周りを見回してきましたが、各イベント応答が実際にどのように機能するかについて十分に詳しく説明しているものを見つけることができませんでした。

4

5 に答える 5

4

タイマーを使用する必要はありません。これに従ってください:

someMovieClip.doubleClickEnabled = true;   
someMovieClip.addEventListener(MouseEvent.DOUBLE_CLICK, someFunction);

function someFunction(e:MouseEvent):void {   
    someMovieClip.removeEventListener(MouseEvent.CLICK, clickFunction);    
    // statement for double click action         
}
于 2010-10-08T20:35:08.360 に答える
1

タイマーを使用する必要があると思いますが、それが2つを区別する唯一の方法です。AS のシングルスレッド イベント駆動型の性質には、注意が必要な問題がいくつかあります。私は次のように実装すると思います:

var timer:Timer = new Timer(100,1);
private function clickHandler(event:MouseEvent):void
{     
    timer.addEventListener(TimerEvent.TIMER, singleClickHandler);
    timer.start();
}

private function doubleClickHandler(event:MouseEvent):void
{
    timer.stop();
    ...
}

private function singleClickHandler(event:TimerEvent):void
{

}
于 2009-05-28T16:35:14.880 に答える
0

ダブルクリックの速度はユーザーが設定するため、ユーザーがダブルクリックの速度を非常に遅く設定している場合、タイマーが機能しない可能性があります1

回避策として、500 ミリ秒 (Windows のデフォルトのタイミング) 以内に 2 回のシングル クリックで独自のダブルクリックを実装することが考えられます。

最初のクリックの動作に応じて、最初のクリックの動作を逆にすることができます。たとえば、最初のクリックでフォルダの色が反転した場合、2 回目のクリックでフォルダを開いて反転を解除することができます。

于 2009-07-01T09:22:38.563 に答える
0

このようにして、(必要な)クリックイベントを殺すだけです。彼が言ったように、両方のハンドラーはお互いを知らないので、他のハンドラーのハンドリングを強制終了することはできません。これは非常に悪い習慣です。

私の理解では、彼は両方を望んでいます。そのため、「doubleClickEnabled」は clickEvent 処理を遅らせる必要があるため、その間に 2 回目のクリックが発生した場合、doubleClick イベントで置き換えることができます。

しかし、そうではありません。両方のイベントがトリガーされます。この動作は予期しないものです。「doubleClickEnabled」が InteractiveObject に対して有効になるとすぐに、doubleClick ハンドラが可能な 2 回目のクリックを待機するため、すべてのシングルクリックに顕著なラグが発生するはずです。待機時間が過ぎると、通常のクリック イベントが発生します。

まだ同じ問題があり、そのための巧妙な解決策はありません。

于 2010-10-22T13:55:33.217 に答える
0

私の経験では、これは少なくとも部分的に設計によるものです。UI の観点から見ると、かなり危険です。いずれにせよ、ユーザーは必ずしも区別を提供するのに十分な速さでクリックすることに長けているとは限りません。また、正しくクリックしたかどうか確信が持てない場合は、再クリックが速すぎて区別できない場合があります。

古いアプリケーションでダブルクリックするとどうなるか考えてみてください (この状況は珍しいことではないと思うからです)。今これを入力しているときに、テキストのどこかをダブルクリックすると、単語が選択されて強調表示され、カーソルが消えます。最初のクリック後に配置され、ダブルクリック ハンドラーによって無効化された可能性があります。

于 2009-05-28T16:41:26.867 に答える