2012-08-17 76 views
0

我有一個可以播放被稱爲視頻的五個可能視頻的數組,以及一個名爲activeVideos的活動視頻數組。當一個視頻播放結束後,我需要獲取索引,在活動視頻數組中找到它的位置,並獲取數組中的下一個值。如果數組中沒有更多的值,我需要獲取第一個值。所以本質上:flash as3 - 如何獲得數組中的下一個元素

activeVideos = [0,1,3] 
videos = [video1, video2, video3]; 

function nextVideo(e:Event){ 
    var curIndex = videos.indexOf(currentVideo); 
    var next = activeVideos.find(curIndex).nextValue // pseudo-code - need to locate the position of the current video within the active array, select the next element, and call show video. 
    showVideo(videos[next]); 
} 

我該怎麼做?

回答

0
function nextVideo(e:Event){ 
    var curIndex = videos.indexOf(currentVideo) + 1; 
    var nextVideo = curIndex >= videos.length ? videos[0] : videos[curIndex]; 
    showVideo(nextVideo); 
} 
1
activeVideos = [0,1,3] 
videos = [video1, video2, null, video3]; 

function nextVideo(e:Event){ 
    var curIndex = videos.indexOf(currentVideo); 
    var next = activeVideos[curIndex+1] || activeVideos[0]; 
    showVideo(videos[next]); 
} 
+0

嗯,止跌的到來有點生疏這是否分配一個布爾值到下一個? – BadFeelingAboutThis 2012-08-17 16:36:25

+0

這個例子似乎適用於我使用|| – mheavers 2012-08-17 17:25:34

+0

||在Ecma中,它的工作方式類似於ruby,如果nil在任務中返回,它將轉到下一個任務。因爲超出範圍的索引將返回零,所以我們繼續前面的下一個語句,直到我們返回一個非零或非未定義的值。 – 2012-08-22 03:37:20

0

也許你可以在家裏嘗試這個,我必須承認我的閃存可能是因爲HTML5,CSS3 + JS炒作:)

nextIndex = -1; 
nextIndex = ((curIndex+1 == videos.length) ? 0 : curIndex+1); 
if (nextIndex > -1){ 
    var next = activeVideos[nextIndex]; 
    // ... do your stuff 
}