Flash でいくつかのボタンを作成しました。ボタンをクリックすると、そのボタンの音声が再生されるようにしようとしています。別のボタンをクリックすると、アクティブなオーディオが停止し、最後にクリックしたボタンの新しいオーディオが再生を開始します。
何か助けてください。
Flash でいくつかのボタンを作成しました。ボタンをクリックすると、そのボタンの音声が再生されるようにしようとしています。別のボタンをクリックすると、アクティブなオーディオが停止し、最後にクリックしたボタンの新しいオーディオが再生を開始します。
何か助けてください。
あなたが説明していることは、実際には非常に簡単です。
まず最初に、オーディオを 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 ステートメントを配置することも検討してください。