2014-09-12 131 views
0

我有一個帶有視頻播放器的網絡應用程序。當用戶按下按鈕時,視頻開始播放。現在,我添加了一個動畫,當點擊該按鈕時開始,當它結束時,視頻應該開始播放。該動畫基於setInterval(更確切地說,是HTML5變體requestInterval)。Android:點擊後3秒播放視頻

此功能完美,但僅適用於Mac/PC,因爲Android上的視頻播放有限制。當您希望視頻以編程方式實際開始播放時,需要通過用戶操作(例如,單擊按鈕)直接觸發調用視頻元素的play()功能的功能。

在動畫之前,事實確實如此,一切都按預期運作。我只需要在動畫完成後才能播放視頻,因爲如果視頻在動畫開始時開始播放,則動畫會出現相當大的滯後。

任何想法或解決方法?

回答

0
<button onclick="setInterval(function(){alert('Start the video now!')},3000);">Try it</button> 

或者

var timerOut=setInterval(function(){startTimer()},3000); 

function startTimer() 
{ 
    //Start video here 
    clearInterval(timerOut); 
} 
+0

我很抱歉,我不得不提我我正在使用JavaScript(不是原生的Android Java應用程序,而是一個網絡應用程序) – 2014-09-12 12:50:34

+0

@Regent:我編輯了我的答案:P – 2014-09-12 13:02:16

0

我看到你使用jquery(從標籤)。 如果動畫與.animate(實現)的功能,你可以使用回調:

$("#btn").click(function() { 
    $("#animate").animate({ //opts go here }, 5000, function() { 
    // Animation complete. 
    }); 
}); 

如果使用過渡CSS3屬性你可以使用transitionend事件處理程序:

$('#animate').off('transitionend').on('transitionend', function() { 
    // Animation complete. 
}); 

編輯:

我想你使用的drawImage()函數是同步的,但圖像加載不是。

嘗試將圖像(S)上添加onload事件處理,像這樣:

var img = new Image(); 
    img.src = "http://image.ext";     
    img.onload = function(){ 
     // drawImage goes here 
    } 

如果您有多個圖像,你可以實現這樣的事情:

var $imgs = ... // this will store all img objects 
var imgLength = $imgs.length; 
var i = 0; 
$imgs.each(function() { 
    i += 1; 
    $(this).onload = function() { 
     if(i === imgLength) //drawImage 
    } 
}); 
+0

我在20 FPS的畫布上繪製圖像,只留下setInterval選項打開(我猜?) – 2014-09-12 12:52:02