我对AS3相当新,所以任何帮助都会受到关注。
基本上我试图做一些类似于Hazard Perception测试的东西,你点击它并记录你在合适的时间点击的天气。
到目前为止我所拥有的是:
import flash.events.Event;
videoOverlay.addEventListener(MouseEvent.CLICK,doClick)
function doClick(e:Event):void
{
trace(myVideo.playheadTime)
}
我设法制作了一个可点击的区域然后显示点击次数,我现在需要做的是能够判断点击是否在某个时间范围内然后添加1点,然后在结束时视频剪辑我想显示一个分数。
我不仅仅是在代码之后,如果有人可能会提出一种方法来做这件事,那就会受到苛刻。
答案 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++;
}
当然,时间速率也取决于应用程序的帧速率。