マウスによるロールオーバーイベントなどのボタンにイベントがある場合、そのロールオーバーイベントが発生した時間を測定する方法は?
質問する
209 次
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 に答える