FlashDevelopで音を再生
FlashDevelopで音を再生したい場合のメモ。
サンプル
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundTransform; import flash.net.URLRequest; import flash.text.TextField; [SWF(width="200", height="100")] public class Main extends Sprite { private var sound:Sound; private var soundch:SoundChannel; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point // URLを指定して読み込み var urlRequest:URLRequest; urlRequest = new URLRequest("seikai.mp3"); sound = new Sound(urlRequest); var text:TextField = new TextField; text.text = "クリックして再生"; addChild(text); stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); } private function onMouseDown(e:MouseEvent):void { // SoundTransformでボリュームを変更 -> 0.5 var trans:SoundTransform = new SoundTransform(0.5); soundch = sound.play(0, 0, trans); // ※音を止める場合には soundch.stop(); というようにする } } }
ちなみにFlashに音データを埋め込む場合は、以下のようになります。
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.media.Sound; public class Main extends Sprite { [Embed(source = "../res/snd/seikai.mp3")] private static const sndSample:Class; private var sound:Sound; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point // 埋め込んだサウンドを使う sound = new sndSample as Sound; stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); } private function onMouseDown(e:MouseEvent):void { sound.play(0, 0); } } }
今回サンプルで鳴らしているような効果音のファイルはWAV形式であることが多いので、FlashでWAVを再生する方法を探していたんですが、どうやらWAVをそのまま再生するというのは出来なくはないけど難しいらしいです。
まぁMP3にエンコードするって大した作業でもないので、別に問題ないですけどね。