0

as3 で自分のゲームのバックグラウンド ミュージックを機能させようとしています。私が欲しいのは、メニュー画面用のサウンドトラックと、ゲーム用のサウンドトラックをもう 1 つ用意することです。メニュー ミュージックは、メニュー フレーム (プログラムのフレーム 2 ~ 5) を切り替えるときに停止したり、新しいインスタンスを作成したりしないでください。

これを行うために、タイムラインに「音楽」レイヤーを作成し、フレーム 2 に 1 つのキーフレームをコードで作成しました。

music=introMusic.play();

ここで、'music' は soundChannel 変数です

ただし、ヘルプ メニューに移動してからタイトル (フレーム 2) に戻ると、コードが含まれている音楽レイヤーのフレームを離れていないにもかかわらず、曲の別のインスタンスの再生が開始されます。

soundChannel の再生を停止する方法は認識していますが、プレーヤーが実際にレベルに入るまで、すべてのメニュー画面で中断されたサウンドの再生を継続したいと考えています。

PS私はas3に比較的慣れていないので、レイヤー上のキーフレーム(円から正方形まで)間の空きスペースは1フレームだけだと思いますか?たぶんそれは間違っていると思いましたか?

前もって感謝します。

4

1 に答える 1

1

このようなことをしたい場合は、必ずタイムラインからサウンドを削除する必要があります。すべてのサウンドが別々のサウンド チャネルにあることを確認し、イベント リスナーを使用して、特定のサウンドの再生が停止 (終了) したことを検出します。ゲーム内でサウンドを停止するように明示的に要求する前に、イベント リスナーを削除することを忘れないでください。

[sound channel].addEventListener(Event.SOUND_COMPLETE,replaySound);

function replaySound(e:Event)
{
    [sound channel].play();
}

このようなものはうまくいきます(私はすぐにそれを書いたので、実装する前に as3 ドキュメントで確認したいと思うでしょう)。

次に、フレームを切り替えるときなど (ゲーム内のサウンドを再生したいときなど) に、サウンドを停止する前にイベント リスナーを削除するようにします。

他の音についても同じことを行います。

詳細については、soundChannel ドキュメントの soundComplete イベントを参照してください。

于 2014-11-10T12:37:50.103 に答える