AS3/Flash でサウンドを使用することはめったにありません。Flash Pro CS6 を使用していますが、メイン SWF にロードされた外部 SWF に埋め込まれたサウンドへのアクセス、制御 (再生、停止など) の方法がわかりません。
メイン SWF に組み込むと、それらを簡単に制御できます。しかし、外部からロードされた SWR では、あらゆる種類のエラーが発生します。このアプリでは、それらを外部 SWF に埋め込む必要があります。
いくつかの解決策を読みましたが、どれもうまくいかないようです。
Flash CS6 インポート ツールを使用して、soundSegment1.mp3 という mp3 ファイルにサウンドを埋め込み、Flash でアクション スクリプト プロパティ パネルを開いて、クラス名 SoundSegment1 を選択します。次に、クラス コードを編集して、SoundSegment1.as というファイルを作成します。このファイルは、同じディレクトリ内のドキュメント クラス main.as のすぐ隣に保存されます。SoundSegment1 クラスのコードは次のようになります。
package {
import flash.media.*;
public class SoundSegment1 extends Sound
{
public function SoundSegment1 ()
{
// no code in here
}
public function playSound()
{
var soundSegment1:Sound = new SoundSegment1();
var channel:SoundChannel = soundSegment1.play();
}
}
}
次に、私の main.as で、次のようなこのサウンドを再生する試みをいくつか行いました。
var fileLocation:URLRequest = new URLRequest(SWFToLoad);
loader.load(fileLocation);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressListener);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeListener);
loader.contentLoaderInfo.addEventListener(Event.INIT, initListener);
function initListener(e:Event):void // I also placed this code on the completeListener and it didn't work
{
loader.content.soundSegment1.playSound(); // doesn't work.
}
私は得る:
Line XXX 1061: Call to a possibly undefined method playSound through a reference with static type flash.display:DisplayObject.
または、 Main.as ファイルのどこでも次のようなことができるはずだということも読みました。
var theClass:Class = Class(loader.content.getDefinitionByName("SoundSegment1"));
var theSound:theClass = new theClass();
theSound.play() //doesn't work either.
私もcompleteListenerを試しました:
var TheClass:Class = e.target.applicationDomain.getDefinition("SoundSegment1") as Class;
var theSound:TheClass = new TheClass();
theSound.play() //doesn't work either.
私は得る:
ReferenceError: Error #1065: Variable SoundSegment1 is not defined.
at flash.system::ApplicationDomain/getDefinition()
私は立ち往生しており、これを機能させる必要があります。あなたの助けに心から感謝します。
提供されたヘルプに事前に感謝します。単純にメインの SWF に埋め込んだり、外部から 1 つずつ個別にロードしたりすることはできないため、実際に機能させる必要があります。
再度、感謝します!