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

好吧,除非您滚出然后重新启动,否则只会触发一次翻转。

所以这就是我要做的:

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 回答