2011-08-15 10 views
0

私はActionscipt3.0であなたの助けが必要です。正直言って、私はフラッシュでnoobをreallです。私は3Dデザイナーなのでフラッシュはたくさんありません;) 現在、私はいくつかのビデオを自動的に再生する必要があるウェブサイトを作成する必要があります。合計5 flvのランダムflvを再生

ユーザーがURLを開いてページに移動すると、合計5つのランダムなビデオが再生されます。動画が終了すると、合計5つの動画のうちの別の動画を選択する必要があります。

例:5つのビデオから1つのビデオを選択する必要があります。それを再生すると、4つのビデオから1つのビデオを選択し、3つのビデオから1つのビデオを選択する必要があります。そして、5つすべてがプレイされた後、それはプロセスを繰り返す必要があります。

私は何を私はSOFAR持っていることである...ここに誰かがそれを私に役立つことを願って、この..

するvarファイル:アレイ= [ "Sz01Puppet.flv"、 "Sz02Puppet.flv"、 」 Sz03Puppet.flv "、" Sz04Puppet.flv "、" Sz05Puppet.flv "]; var randomFiles:Array = [];

var i:int;私 randomFiles.push(ファイル[Math.floor(Math.random()* files.length)]);}

トレース(randomFiles);

しかし、その(I = 0のためにどのような方法で作業を誰かが

+0

あなたはロジックがOKに見えますが、あなたはそうしないと、重複になってしまいます、また、必要なファイルの配列から項目を削除する必要があり、ループのそれは間違っているビット... 1分に見える –

答えて

0

Hereはそれを行うための一つの方法である私を助けることができれば...

は素晴らしいことだではない。

+0

うわー!ご協力いただきありがとうございます!私は数時間後にそれをテストします。そしてあなたに返信します:)あなたのサポートのために本当にうれしいです。 – arvidurs

1

うん、あなたはほとんどそこにいる。 はここでループのために書かれてきたはずです方法は次のとおりです。

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を持っていますが、どのように私は動作するようにActionScriptを取得し、ランダムに5つのflvをすべて再生するファイルをレンダリングするのですか?私はそれを私のウェブサイトに実装できますか? – arvidurs

+0

私を助けてくれるもう一つのこと...私は5枚のFLVをステージに置かなければならないのですか、それとも彼らは図書館に滞在できますか?私はフラッシュでほとんど経験がないので、皆さんは本当に私にとって大きな助けになります。 @マーク – arvidurs

+0

@arvidurs心配する必要はありません!私は "すべての5つのflvを演奏する"と想像していますが、それは同時にではありません。あなたのウェブサイトとその設定によって異なります。私は最も簡単な方法は[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); 
関連する問題