2009-05-28 9 views
0

私はmp3プレーヤーで作業しています。現在、私はトラックの変更に固執しています。このような私の変数宣言の外観:actionscriptの基本的なサウンド機能の助けを借りて3

var index:int = -1; 
var music:Sound = new Sound(new URLRequest("moe2008-05-24d02t02_vbr.mp3")); 
var sc:SoundChannel; 
var isPlaying:Boolean = false; 

と私の変更トラック機能は、次のようになります。

function changeTrack(newTrack){ 
    sc.stop(); 
    isPlaying = false; 
    music = new Sound(new URLRequest(newTrack)); 
    sc = music.play(); 
    isPlaying = true; 
    index++; 
} 

誰もが任意の明らかなエラーを参照してくださいありません?フラッシュゴードンは おかげ

答えて

-2

を言ったように:「あなたはその プロパティをリセット ときに、ローカル変数をredefing実際 です。」 http://www.actionscript.org/forums/archive/index.php3/t-181659.html

この行は少し疑わしいです。

sc = music.play(); 

は、それはすべきではありません:

var musicPlay = music.play(); 
sc = musicPlay; 
+0

申し訳ありませんが、意味がありません...そのスレッドの状況は非常に異なっています... – Cay

+0

これらは全く同じです。いずれの場合も、scにはSoundChannel参照であるmusic.play()の結果が割り当てられます。 – typeoneerror

0

は、私はあなたが新しいものを作成する前に、サウンドの接続をクローズする(()Sound.close)を試してみるべきだと思います。また、同じサウンドオブジェクトを使用して、新しいファイル(Sound.load())をロードして、GCの問題を回避します(サウンド間でフェードインする必要がない限り)。

0

あなたが実際にどこの部分を欠いているロード新しいサウンドオブジェクトに新しいサウンド。あなたの例は、同じサウンドオブジェクトを再利用しているようです。あなたが別の音インスタンスとして新しいサウンドを作成するために、地元のサウンド変数は、既存の1つにロードすることはできません必要

var sound:Sound = new Sound(); 
var request:URLRequest = new URLRequest("path/to/your/sound"); 

sound.load(request); 

sc = sound.play(); 

::のようなものである必要があり、負荷たら

()がサウンドに呼ばれています オブジェクトの場合、後で という異なるサウンドファイルをそのサウンド オブジェクトにロードすることはできません。異なるサウンドをロードするには、新しいSoundオブジェクトを作成します。

辞書を使用して、どのサウンドが既に読み込まれているかを把握できます。このメソッドが呼び出されると、サウンドオブジェクトがディクショナリに登録されているかどうかを確認し、そうであれば、ファイルを読み込むのではなく再生します。

関連する問題