2011-12-27 11 views
2

私はHOURSを試しました。サウンドを停止し、as3でアンロードする簡単な解決策が必要です。as3サウンドクラスサウンドをアンロード

これは私のコードのすべてではありませんが、要するにランダムなサウンドが読み込まれています。私は、証明バーが関数の外にある必要があるので、私はプログレスバーのための他の関数を参照することができます。

サウンドをアンロードして、同じ名前を使用して新しいサウンドをロードできるようにするにはどうすればいいですか?

このテストには2つのボタンがあります。再生音と停止音ボタン。ここ

は私のコードです:HERE

var TheSound:Sound = new Sound(); 
var mySoundChannel:SoundChannel = new SoundChannel(); 

PlayButton.addEventListener(MouseEvent.CLICK, PlaySound); 
StopButton.addEventListener(MouseEvent.CLICK, Stopsound); 

function PlaySound(e:MouseEvent) 
     { 
     TheSound.load(new URLRequest("http://www.MyWebsite.com/Noel.mp3")); 
     mySoundChannel = TheSound.play(0); 
     } 

function StopSound(e:MouseEvent) 
     { 
     delete TheSound; 
     } 

は私がGETエラーです:

Error: Error #2037: Functions called in incorrect sequence, or earlier call was unsuccessful. 
    at flash.media::Sound/_load() 
    at flash.media::Sound/load() 
    at Untitled_fla::MainTimeline/PlaySound()[Untitled_fla.MainTimeline::frame1:21] 

UPDATE ....私は音をストーピングAND THEN

mySoundChannel.stop(); 
TheSound.close(); 
を次のようにITをアンTRIED

今、私はこのエラーを受け取りました:

Error: Error #2029: This URLStream object does not have a stream opened. 
    at flash.media::Sound/close() 
    at Untitled_fla::MainTimeline/shut1()[Untitled_fla.MainTimeline::frame1:35] 

私は近いと思います。これまでのご協力に感謝します。

答えて

3

演奏から音を止めるために、あなたが最初にそうように停止するのSoundChannelインスタンスを指示する必要があります:

mySoundChannel.stop(); 

あなたが呼び出すことで、音のインスタンスによって使用されたストリームを閉じることができる、ということでしたら、そのような密接な方法は:

TheSound.close(); 

また、DELETEキーワードはめったにAS3で使用されていない、あなたはそれはいくつかの方法は、あなたが削除されている変数にアクセスしようとしているべきではないながら。 TheSound変数に現在割り当てられているインスタンスを破棄するには、その値をnullに設定する必要があります。このようにして、フラッシュは適切な時間を見つけたときにもはや使用されなくなった古いサウンドインスタンスを適切にガベージコレクションします。

+0

おかげさまで、ありがとうございました。あなたのコードを試してみましたが、新しいエラーが発生しました。私はそれを上に掲示した。 –

+0

ストリームを閉じる部分を削除するだけでよいはずです。 – joelrobichaud

+0

それはストリームを停止しますが、再度リロードするときに上記の最初のエラーが発生します "関数が不正な順序で呼び出されたか、以前の呼び出しが失敗しました。 –

1

関数の外部で変数を初期化できますが、関数が呼び出されるたびに新しいSoundオブジェクトとして定義できます。そうすれば、グローバルスコープになり、いつでも新しいURLを読み込むことができます。

var TheSound:Sound; 
var mySoundChannel:SoundChannel = new SoundChannel(); 

PlayButton.addEventListener(MouseEvent.CLICK, PlaySound); 
StopButton.addEventListener(MouseEvent.CLICK, StopSound); 

function PlaySound(e:MouseEvent) 
     { 
     TheSound = new Sound(); 
     TheSound.load(new URLRequest("http://www.MyWebsite.com/Noel.mp3")); 
     mySoundChannel = TheSound.play(0); 
     } 

function StopSound(e:MouseEvent) 
     { 
     mySoundChannel.stop(); 
     TheSound.close() 
     } 
関連する問題