2013-03-12 65 views
3

我對AS3相當陌生,所以任何幫助都可以使用。AS3 - 使用playHeadTime記錄點擊並使用時間

基本上我試圖做出類似於危害感知測試的東西,在那裏你點擊並記錄你在正確的時間點擊的天氣。

我到目前爲止是這樣的:

import flash.events.Event; 

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

我已成功地使一個可點擊區域,然後顯示點擊次數的,我現在需要做的是要能判斷一個點擊是一定的時間框架然後添加1點,然後在視頻剪輯的結尾我想顯示一個分數。

我不只是代碼後,如果任何人都可以提出一種方法來做到這一點,它將appriciated。

回答

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 
     } 
    } 
} 
+0

如果沒有從字符串到數字的轉換完成,這將是完美的。換句話說,開始,結束應該存儲秒的數值。 – 2013-03-12 13:11:13

+0

@ Lukasz'Severiaan'Grela這是'設計'的決定:你想要一個計算機友好的價值(數字​​,以秒爲單位)或人性化的(如'1:05'格式)。人類可讀的 – strah 2013-03-12 13:14:02

+0

只能是例如在xml中,一次轉換爲數字,或者可以在用戶需要查看時進行轉換 - 但在循環中進行比較時不能轉換。 – 2013-03-12 15:44:53

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++; 
} 

當然,時間速度取決於應用程序的幀率爲好。