AS3 - 使用 playHeadTime 记录点击并使用时间
Posted
技术标签:
【中文标题】AS3 - 使用 playHeadTime 记录点击并使用时间【英文标题】:AS3 - Recording a click with playHeadTime and using the time 【发布时间】:2013-02-28 00:06:10 【问题描述】:我对 AS3 还很陌生,所以会得到任何帮助。
基本上我正在尝试做一些类似于危险感知测试的东西,你点击它,它会记录你是否在正确的时间点击的天气。
到目前为止,我所拥有的是:
import flash.events.Event;
videoOverlay.addEventListener(MouseEvent.CLICK,doClick)
function doClick(e:Event):void
trace(myVideo.playheadTime)
我已经设法制作了一个可点击区域,然后显示点击次数,我现在需要做的是能够判断点击是否在某个时间范围内,然后添加 1 点,然后在结束时视频剪辑我想显示一个分数。
我不只是在追求代码,如果有人可以提出一种这样做的方法,我会很高兴的。
【问题讨论】:
【参考方案1】:您可以将“正确时刻”存储在数组、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
【讨论】:
如果没有从字符串到数字的转换就完美了。换句话说,开始,结束应该存储秒的数值。 @Lukasz'Severiaan'Grela 这就是“设计”决定:您想要一个计算机友好的值(数字,以秒为单位)还是人类友好的值(格式如“1:05”)。 人类可读的只能是例如在xml中并一次转换为数字,或者可以在用户需要查看时转换 - 但不是在循环中进行比较时。 同意,但是人类必须手动输入这些值,无论是输入数组还是 XML 或他们想要的任何数据集合。一旦数据在那里,它就可以转换为“计算机友好”格式。转换可以在一开始或需要数字时进行。上面的代码只是为了说明,它不是最终的优化版本。以这种方式展示这个想法更容易。 Pozdrawiam :-)【参考方案2】:我能想到的最好方法是使用计时器。设置一个计时器类并在点击事件显示上,而不是点击是否在一定的时间范围内 - 如果是,那么成功,如果不是,那么失败。
试试这样的:
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++;
当然,时间速率也取决于应用程序的帧速率。
【讨论】:
以上是关于AS3 - 使用 playHeadTime 记录点击并使用时间的主要内容,如果未能解决你的问题,请参考以下文章