0

マウスによるロールオーバーイベントなどのボタンにイベントがある場合、そのロールオーバーイベントが発生した時間を測定する方法は?

4

3 に答える 3

2

MOUSE_OVERとMOUSE_OUTの違いの時間を計ることができます。

var myButton:Button = new Button();
var diff:Number = 0;
var startDate:Date;

myButton.addEventListener(MouseEvent.MOUSE_OVER, function(evt:MouseEvent):void {
    startDate = new Date();
});

myButton.addEventListener(MouseEvent.MOUSE_OUT, function(evt:MouseEvent):void {
    diff = (new Date()).time - startDate.time;
    if (diff >= 5000)
         // do something
});

Flash Builderを起動していませんが、これは良いスタートになるはずです。詳細については、次のドキュメントをご覧ください。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/MouseEvent.html

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Date.html#time

于 2012-05-15T16:16:40.370 に答える
1

ええと、yuoがロールアウトしてから再びオンにしない限り、ロールオーバーは1回だけ実行されます。

だからこれが私がすることです:

private var timeoutId:uint=-1;
private function onRollover(e:MouseEvent):void {
    timeoutId=setTimeout(play, 5000);
}

private function onRollout(e:MouseEvent):void {
    if(timeoutId != -1) clearTimeout(timeoutId);
}

private function play():void {
    //code to play music
}

もちろん、onRolloverとonRolloutはそれぞれのイベントを処理します。

于 2012-05-15T17:11:08.863 に答える
1

たぶん、 Timerクラスを見てみるべきでしょう。これを使ってできることの簡単な例を次に示します。

var timer:Timer = new Timer(5000,1);

timer.addEventListener(TimerEvent.TIMER, playVideo);

btnInstance.addEventListener(MouseEvent.MOUSE_OVER, 
                             function(evt:MouseEvent):void {
                                timer.start();
                             });

btnInstance.addEventListener(MouseEvent.MOUSE_OUT, 
                             function(evt:MouseEvent):void {
                                timer.stop(); 
                             });

function playVideo(evt:TimerEvent):void {
    // play video
}

それが役に立てば幸い。

于 2012-05-15T23:35:44.490 に答える