AS3 - 使用playHeadTime记录点击并使用时间

时间:2013-03-12 12:56:54

标签: actionscript-3 actionscript flash-cs6

我对AS3相当新,所以任何帮助都会受到关注。

基本上我试图做一些类似于Hazard Perception测试的东西,你点击它并记录你在合适的时间点击的天气。

到目前为止我所拥有的是:

import flash.events.Event;

videoOverlay.addEventListener(MouseEvent.CLICK,doClick)
function doClick(e:Event):void
{
    trace(myVideo.playheadTime)
}

我设法制作了一个可点击的区域然后显示点击次数,我现在需要做的是能够判断点击是否在某个时间范围内然后添加1点,然后在结束时视频剪辑我想显示一个分数。

我不仅仅是在代码之后,如果有人可能会提出一种方法来做这件事,那就会受到苛刻。

2 个答案:

答案 0 :(得分:2)

你可以将'正确的时刻'存储在数组,xml等等中。我们这样说:

var moments:Array = [{start: "1:01", end: "1:16"}, {start: "1:25", end: "1:26"}, {start: "1:39", end: "1:51"}];
//time is in minutes, so you need to convert it to seconds
function doClick(e:Event):void
{
    for (var i:int = 0; i < moments.lenght; i++)
    {
        var moment:Object = moments[i];
        if (myVideo.playheadTime => toSeconds(moment.start) && myVideo.playheadTime <= toSeconds(moment.end))
        {
            trace("that's the right moment");
            break; //we do not need to check further
        }
    }
}

答案 1 :(得分:0)

我能想到的最好的方法就是计时器。设置一个计时器类,然后在点击事件显示上确定点击是否在一定的时间范围内 - 如果是,那么成功,如果不是,那么失败。

尝试这样的事情:

counter:Number = 0;
videoOverlay.addEventListener(MouseEvent.CLICK,doClick)
public function doClick(e:Event):void
{
if (counter < 10)
trace("Success, your quick!");
else
  {
   trace("Failure!");
  }
}
addEventListener(Event.ENTER_FRAME, timed_event);

public function timed_event(event:Event) : void
{
counter++;
}

当然,时间速率也取决于应用程序的帧速率。

相关问题