2011-08-15 129 views
0

我需要您的幫助Actionscene3.0。說實話,我在閃光中重新做出了noob。我更像一個3D設計師,所以不是很多閃光燈;) 目前我必須創建一個網站,一些視頻應該自動播放。隨機播放flv共5個flv

當用戶打開頁面上的URL和土地,共計5的隨機視頻應播放。視頻完成後,應該選擇總共5個視頻的另一個視頻。

所以一個例子:應該選擇的5個視頻一個視頻。播放它,那麼它應該選擇4個視頻中的1個視頻,然後它應該選擇3個視頻中的1個視頻......等等。所有5場比賽結束後,它應該重複這個過程。

我希望這裏有人能幫助我與......我有什麼SOFAR是這樣的..

var中的文件:數組= [ 「Sz01Puppet.flv」, 「Sz02Puppet.flv」, 「 Sz03Puppet.flv「,」Sz04Puppet.flv「,」Sz05Puppet.flv「]; var randomFiles:Array = [];

變種I:INT;對於(I = 0;我 randomFiles.push(文件[Math.floor(的Math.random()* files.length)]);}

跡(randomFiles);

但其不以任何方式工作..

將是巨大的,如果有人可以幫助我

+0

你的邏輯看起來不錯,但你需要還需要刪除這些文件數組中的項,否則你會重複結束,併爲循環看起來有點不對勁...... 1分鐘 –

回答

0

Here是做到這一點的方法之一。

+0

哇!謝謝你的幫助!我將在幾個小時內進行測試。並會回覆你:)我真的很高興你的支持.. – arvidurs

1

是啊,你就要成功了。 下面是for循環應該已經被寫入:

var files:Array = [ "Sz01Puppet.flv", "Sz02Puppet.flv", "Sz03Puppet.flv", "Sz04Puppet.flv", "Sz05Puppet.flv" ]; var randomFiles:Array = []; 
var i:int; 
for(i = 0 ; i < files.length; i++) randomFiles.push(files[Math.floor(Math.random() * files.length)]); 
trace(randomFiles); 

不過,你注意刪除項目形成陣列,所以你必須重複。

這裏有一個例子:

var files:Array = [ "Sz01Puppet.flv", "Sz02Puppet.flv", "Sz03Puppet.flv", "Sz04Puppet.flv", "Sz05Puppet.flv" ]; 
var shuffledFiles:Array = shuffleArray(files); 
//quick test 
var testTimer:Timer = new Timer(1000); 
testTimer.addEventListener(TimerEvent.TIMER,updateFile); 
testTimer.start(); 

function updateFile(event:TimerEvent):void{ 
    if(shuffledFiles.length == 0) shuffledFiles = shuffleArray(files);//all files played, repeat process 
    trace('play file',shuffledFiles[0]); 
    shuffledFiles.shift(); 
} 
function shuffleArray(source:Array,clone:Boolean = true):Array { 
    var output:Array = []; 
    var input:Array = clone ? [].concat(source) : source;//clone ? preserve orignal items by making a copy for shuffling, or not 
    while(input.length) output.push(input.splice(int(Math.random() * input.length-1),1)[0]); 
    return output; 
} 

古德勒克

+0

謝謝喬治!它似乎工作。我得到一個永無止境的循環,這正是我想要的。我現在有5個FLV,但是我如何讓動作工作,並呈現一個隨機播放所有5個動畫的文件?然後我可以實現到我的網站? – arvidurs

+0

另一件可以幫助我的事情。我必須將我的5個動畫片放到舞臺上,還是可以留在圖書館?我幾乎沒有閃光燈的經驗,所以你們對我來說真的很棒。 @Mark – arvidurs

+0

@arvidurs不用擔心!我想通過「連續播放所有5個動畫」,而不是同時進行:)這取決於您的網站及其設置。我會說最簡單的方法是[使用FLVPlayback](http://www.adobe.com/devnet/flash/quickstart/flvplayback_component.html)。一旦獲得了實例名稱和所需外觀的FLVPlayback,請將flv路徑設置爲源(yourFLVPlayer.source = yourRandomFLVPath)。如果你的網站大多是html,那麼可能需要查看SWFObject/FlashVars/ExternalInterface,這樣你就可以控制視頻,而無需一直重新編譯swf。 –

1

您可以使用的Array.sort()函數隨機排序。

// random sort function 
function shuffle(a:*, b:*):int 
{ 
    return int(Math.random() * 2) - 1; 
} 

var files:Array = ["Sz01Puppet.flv", "Sz02Puppet.flv", "Sz03Puppet.flv", "Sz04Puppet.flv", "Sz05Puppet.flv"]; 

var randomFiles:Array = files.sort(shuffle); // get a new instance of the array which is sorted 

trace(randomFiles);