3

我对 AS3 相当陌生,所以任何帮助都会得到帮助。

基本上我正在尝试做一些类似于危险感知测试的东西,你点击它,它会记录你是否在正确的时间点击的天气。

我到目前为止是这样的:

import flash.events.Event;

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

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

我不只是在追求代码,如果有人可以提出一种这样做的方法,那将不胜感激。

4

2 回答 2

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
        }
    }
}
于 2013-03-12T13:07:57.613 回答
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++;
}

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

于 2013-03-12T13:09:01.013 回答