0

AS3 ゲームでサウンドが互いに干渉するという奇妙な問題が発生しています。

ゲーム世界の各敵には、グラフィックとサウンドを含むムービークリップがあります。ゲームコードは gotoAndPlay() を呼び出して、対応するサウンドで特定のアニメーションを再生します。(ムービークリップは Flash で作成され、.swc は Flashdevelop プロジェクトにインポートされます)

問題は、特定のタイプの敵の複数のインスタンスが同時に画面に表示される場合、それらの音が互いに「踏みつける」ことです: 敵 A と B が同じタイプで、A が再生中の場合サウンド、B はそのサウンドを再生できません。gotoAndPlay は正しいアニメーションになりますが、サウンドは再生されません。

同様に、A がループ サウンドを再生し、B が停止サウンド イベントを含むフレームを再生すると、A のループが停止します。

Flashplayer がムービークリップ インスタンスごとではなく、ムービークリップタイプごとに 1 つのチャネルのみを割り当てていることは明らかですが、Google は実際には何も表示していません。

このシナリオのベスト プラクティスはありますか? (つまり、タイムラインにサウンドとアニメーションがある同じムービークリップの複数のインスタンス) 何が間違っていますか?!

御時間ありがとうございます。

[編集]

私が言いたいことをもう少しよく説明するために、敵が走ったり、しゃがんだり、ジャンプしたり、銃を発砲したりするなど、いくつかのアニメーションを含む Baddie ムービークリップがあるとしましょう。

ムービークリップには 2 つのレイヤーがあり、1 つはグラフィック (アニメーション) 用、もう 1 つはサウンド用です。

フレーム 20 には、マズルフラッシュ (アニメーション レイヤー上) と、対応する銃声 (サウンド レイヤー上) があります。フレーム 40 には、ジャンプ アニメーションと対応するジャンプ サウンドがあります。

私の問題は、これらのムービークリップが一度にステージ上に 2 つ以上あり、そのうちの 1 つが銃声の音の再生中にある場合、他のクリップは銃声の音を再生しません (それらはただし、正しくアニメーション化されます)。

Flashplayer は、特定のムービークリップのすべてのインスタンスに対して 1 つのオーディオ チャネルのみを割り当てているようです。これは役に立たないため、期待される動作ではないように思われるので、埋め込みで何かを台無しにしたと推測しています (おそらく、どこかにパラメーターまたはフラグが隠されているため、「各インスタンスに独自のサウンド チャネルを与える」と言うことができます)。 "?)

4

1 に答える 1

0

Sound()タイムラインではなく、関連するクラスを実際に使用する必要があります。なぜこれが起こっているのか正確にはわかりません。おそらく多くの非コーダーがこの方法でサウンドを制御するので驚くべきことですが、慣れればサウンドをより細かく制御できるようになります。単純。このページでは、必要なクラスについて非常にうまく説明しています。

http://www.republicofcode.com/tutorials/flash/as3sound/

Flash で開始してタイムラインを使用したときに、多くのサウンドで問題が発生したことを覚えています。私の場合は、別のインスタンスが開始される前に常に前のサウンドを停止していました。プログラムでそれらを制御し始めたら、問題はありませんでした。表面的には簡単に思えます。ほとんどのユーザーは再生ヘッド制御機能をかなり早い段階で習得しますが、非常に早く複雑で面倒になる可能性があります。懸念事項を分離し、専用のクラスでサウンドを制御する方がはるかに優れています。

お役に立てれば。

于 2013-01-25T07:44:47.683 に答える