root/as3/sazameki/branches/fp10/src/samples/SimpleSoundSample.as

リビジョン 1529, 1.5 kB (コミッタ: zk33, コミット時期: 4 年 前)

最新の書き方に合わせてサンプルをアップデート

Line 
1 package samples
2 {
3         import flash.display.Sprite;
4         import flash.events.Event;
5         import flash.events.SampleDataEvent;
6         import flash.media.Sound;
7        
8         public class SimpleSoundSample extends Sprite
9         {
10                 [Embed(source = 'asset/movemouse.png')]
11                 private var bg:Class;
12                 private var phase:Number = 0;
13                 private var frequency:Number = 440;
14                 private var shapeFactor:Number = 0;
15                
16                 public function SimpleSoundSample()
17                 {
18                         //Soundインスタンスを作る
19                         var sound:Sound = new Sound();
20                         //SAMPLE_DATAイベントにリスナー登録
21                         sound.addEventListener(SampleDataEvent.SAMPLE_DATA, onSampleData);
22                         //再生開始する
23                         sound.play();
24                        
25                         addEventListener(Event.ENTER_FRAME, onMouseMove);
26                         addChild(new bg());
27                 }
28        
29                 private function onSampleData(e:SampleDataEvent):void{
30                         var sig:Number;
31                        
32                         for (var i:int = 0; i < 2048; ++i )
33                         {
34                                 sig = getCurrentData()*0.8;
35                                 //SampleDataEvent.dataに波形データを書き込む(-1.0~1.0のNumber)
36                                 //左チャンネル
37                                 e.data.writeFloat(sig);
38                                 //右チャンネル
39                                 e.data.writeFloat(sig);
40                         }
41                 }
42                
43                 private var pi2:Number = Math.PI * 2;
44                 private function getCurrentData():Number
45                 {
46                         phase += frequency * pi2 / 44100;
47                         if (phase > pi2) phase -= pi2;
48                         return (Math.sin(phase)*shapeFactor + (phase < Math.PI ? 1:-1 )*(1-shapeFactor)*0.5);
49                 }
50                
51                 private function onMouseMove(e:Event):void{
52                         frequency = mouseY*2  + 55;
53                         shapeFactor = 1-mouseX/stage.stageWidth;
54                 }
55         }
56        
57 }
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。