2011-07-19 22 views
0

教材として使用されているFlashサイトを作成しました。クライアントは現在、セクションにボイスオーバーを追加したいと考えています。ムービークリップで一度サウンドを再生する方法はありますか?視聴者がそのクリップに戻ると、サウンドは再び再生されません。ありがとう。フラッシュで音を一度再生する

答えて

3

これはトリックを行う必要があります。私はFlashでこのコードをテストしていませんが、これは正しい方向にあなたを得るはずです。

import flash.net.SharedObject 

//Use anything in place of "sounds" 
var so:SharedObject = SharedObject.getLocal("sounds"); 

//Check if the sound has not been played 
//Use anything in place of "specificSoundPlayed" 
if(so.data.specificSoundPlayed == false) 
{ 
//Play the sound 
var snd:Sound = new Sound(); 
snd.load(new URLRequest("my.mp3")); 
snd.play(); 

//Set the shared object property so we know the sound was played 
so.data.specificSoundPlayed = true; 
} 
+0

これは、swfを閉じて同じコンピュータ/ブラウザで再訪しても、一度だけサウンドを再生するために使用されます。 – zachzurn

+0

ありがとうございました。 – cbeezy

0

サウンドが1回再生されると、ブール値フラグをfalseに設定できます。

var flag:Boolean = false; 
if(!flag){ 
    flag = true; 
    playSound(); 
} 
+0

しかし、コードが存在するフレームをユーザーが入力するたびに実行されると、毎回フラグが常にtrueになるため、毎回サウンドが再生されます。これは、指定されたタイムラインから別の場所で処理する必要があります。 – scriptocalypse

+0

ええ、フラグの初期化は、同じフレームで起こりません。これは、単に概念を説明することになっていました。その最初の行は、アプリケーションが初期化される、つまり一度だけ実行されるところまで行くべきです。 –

1

私はザッツンの答えが好きです。 SharedObjectは、cookieのようなデータをマシンに保存する唯一の方法です。しかし、一部のユーザー(自分自身を含む)がサイトが共有オブジェクトを格納できないようにFlash Playerの設定を行っているため、必要なエラートラップ(try/catchブロックなど)を追加することをお勧めします。

SharedObjectに依存したくない場合は、Flashの呼び出しをいくつかの他のサーバー側の技術に設定する必要があります。サイトでユーザーのログインが必要な場合は、ユーザー用の永続データが既にある場合があります。 Flashが音声を再生したかどうかについてのデータを送受信できるようにするサービス呼び出しを追加することができます。

関連する問題