actionscript sound クラス
色々試しましたが ボタンに「play」「stop」「pause」がかからない。
音はながれるがライブラリに埋め込んであるだけのものを拾ってきてるだけでプレビューと同時に再生されてしまっている。
新しいもの好きのため「AS cs3」での記述で挑みました。難しいです。
ソースコード1画像↓↓↓
こっちはライブラリへの読み込みを元に記述
タイムライン画像↓↓↓
ボタンきかない勝手にながれる。。。
エンベッドflash見れない?
ソースコード2
こっちは外部リンクからの読み込み
ディレイがかけれるとのこと。
僕にはかからないけど、、、
シンタックス色変わったり変わらなかったり、、、
var sampling = 2048; var loop = true; var loop_begin = 0; var delay_sampling = 1000; var delay_decrease_buf = 0.85; var delay_decrease_src = 0.5; var url : URLRequest = new URLRequest("sd_1"); var src_obj : Sound = new Sound(url); var out_obj = null; var channel = null; src_obj.addEventListener (Event.COMPLETE,SoundCompleteFunc); function SoundCompleteFunc (event : Event) { out_obj = new Sound(); out_obj.addEventListener(SampleDataEvent.SAMPLE_DATA, SampleDataFunc); channel = out_obj.play(); } var wave = { pos : 0 }; var delay = { pos : 0, buffer : new ByteArray() }; var i; for(i=0;i < delay_sampling;i++){ delay.buffer.writeFloat(0.0); delay.buffer.writeFloat(0.0); } import flash.media.Sound; import flash.media.SoundChannel; import flash.events.MouseEvent; import flash.events.Event; var SoundClick:Sound = new My_Sound(); var my_channel:SoundChannel = sound.play(0,0,SoundTransform); channel.stop(); Sound.close(); sound.null(); sound = new Sound(); channel = sound.play(); btn2_btn.addEventListener(MouseEvent.CLICK,play_btn2_btn); function play_music_f(e:MouseEvent):void{ my_channel = My_sound.play(); my_channel.addEventListener(Event.SOUND_COMPLETE,my_chan_comp); } function my_chan_comp(e:Event){ trace("再生終了"); my_channel = My_sound.play(); my_channel.addEventListener(Event.SOUND_COMPLETE,my_chan_comp); } btn3_btn.addEventListener(MouseEvent.CLICK,stop_music_f); function stop_music_f(e:MouseEvent):void{ my_channel.stop(); } function SampleDataFunc(event:SampleDataEvent):void{ var i; var src_buffer:ByteArray = new ByteArray(); var out_buffer:ByteArray = event.data; if(event.position == 0){ for(i=0;i < 4096;i++){ out_buffer.writeFloat(0.0); out_buffer.writeFloat(0.0); } return; } var copy_sampling = sampling; var get_sampling = src_obj.extract(src_buffer,copy_sampling,wave.pos); while(true){ wave.pos += get_sampling; copy_sampling -= get_sampling; if(copy_sampling <= 0) break; if(!loop){ for(i=0;i < copy_sampling;i++){ src_buffer.writeFloat(0); src_buffer.writeFloat(0); } break; } wave.pos = loop_begin; get_sampling = src_obj.extract(src_buffer,copy_sampling,wave.pos); if(!get_sampling) return; } var data; src_buffer.position = 0; for(i=0;i < sampling;i++){ delay.buffer.position = delay.pos * 4 * 2; var src_l = delay.buffer.readFloat(); var src_r = delay.buffer.readFloat(); data = src_buffer.readFloat(); data = src_l * delay_decrease_buf + data * delay_decrease_src; out_buffer.writeFloat(data); var out_l = data; data = src_buffer.readFloat(); data = src_r * delay_decrease_buf + data * delay_decrease_src; out_buffer.writeFloat(data); var out_r = data; var pos = delay.pos - 1; if(pos < 0) pos += delay_sampling; delay.buffer.position = pos * 4 * 2; delay.buffer.writeFloat(out_l); delay.buffer.writeFloat(out_r); delay.pos ++; if(delay_sampling <= delay.pos) delay.pos = 0; } } </script>