3

Flash でいくつかのボタンを作成しました。ボタンをクリックすると、そのボタンの音声が再生されるようにしようとしています。別のボタンをクリックすると、アクティブなオーディオが停止し、最後にクリックしたボタンの新しいオーディオが再生を開始します。

何か助けてください。

4

1 に答える 1

2

あなたが説明していることは、実際には非常に簡単です。

まず最初に、オーディオを Flash プロジェクトにインポートすることをお勧めします。または、外部ファイルから直接再生する方法もあります。これは私の回答の範囲を超えているため、それについてサポートが必要な場合は、具体的にカバーする質問を投稿してください。

オーディオ ファイルを Flash プロジェクトのライブラリにインポートしたと仮定して、その as3 インスタンスを作成します。(ライブラリ内のファイルを右クリックし、[プロパティ] --> [ActionScript] [タブ] --> [チェック] ActionScript のエクスポート & [名前を入力] クラス)

次に、コードでサウンドの定義を作成します。(前のステップの Class フィールドで、2 つのサウンドに「mySound1」と「mySound2」という名前が付けられていると仮定します。)

var mySound1:Sound = new mySound1();
var mySound2:Sound = new mySound2();

次に、サウンド チャネルを定義します。

var mySoundChannel:SoundChannel = new SoundChannel();

1 つのサウンドを停止して別のサウンドを再生するには、2 つの方法があります。1 つ目は、毎回両方を行う 1 つの関数を作成することです。2 つ目の方法は、「再生」用と「停止」用の 2 つの式を作成することです。どの方法が最適かを判断する必要があります。以下の 2 つの関数の方法を使用します。

function stopSound():void
{
   //This stops all sound in the sound channel. 
   //If there is nothing playing, nothing happens.
   mySoundChannel.stop();
}

//In this function, we create an argument that allows us to tell the function 
//what sound to we want it to play.
function playSound(soundname:String):void
{
   mySoundChannel = this[soundname].play(0, 0);
}

[注: 必要に応じて play() プロパティを微調整して、曲の途中から開始したり、永遠にループしたりできます。0,0 は最初から始まり、ループしません。これについてはドキュメントを参照してください。]

次に、ボタンのイベント リスナーを接続します。(イベント リスナーに関するヘルプが必要な場合は、ドキュメントを参照してください。)

myButton1.addEventListener(Mouse.CLICK, btn1Click);
myButton2.addEventListener(Mouse.CLICK, btn2Click);

function btn1Click(evt:Event):void
{
   stopSound();
   playSound(mySound1);
}

function btn2Click(evt:Event):void
{
   stopSound();
   playSound(mySound2);
}

これは、開始するのに十分な情報です。私のゲーム コアには、サウンドの再生を処理するためのカスタム クラスが実際にあり、サウンドを繰り返したり、音量を変更したり、サウンドが互いに競合しないようにしたりすることができます。これは、サウンド クラスでかなりのことができることを強調するためです。アイデアやヘルプについては、そのドキュメントを掘り下げてください。

存在しないサウンドの名前を渡すと参照エラーがスローされるため、playSound 関数に try-catch ステートメントを配置することも検討してください。

于 2012-10-31T16:01:47.110 に答える