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 记录点击并使用时间的主要内容,如果未能解决你的问题,请参考以下文章

在 AS3 中处理服务器响应

ActionScript 3 AS3获取两个地理点之间的距离

AS3 影片剪辑中心旋转和左上角 X、Y 点

AS3 中的随机百分比

AS3在0,0处画一个点来表示显示对象的中心

ActionScript 3 AS3在0,0处绘制一个点以显示DisplayObject的中心