おと出したい2

by otherone
何かしらキーをおしたら
ランダムの音がでるようにしました。

左上のぼたんでフルスクリーン
※フルスクリーン時はスペースキーのみ反応します。
♥0 | Line 103 | Modified 2010-09-15 16:31:59 | MIT License
play

ActionScript3 source code

/**
 * Copyright otherone ( http://wonderfl.net/user/otherone )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/nJcx
 */

package {
    import caurina.transitions.SpecialPropertySplitter;
    import flash.display.Graphics;
    import flash.display.MovieClip;
    import flash.display.Shape;
    import flash.display.Sprite;
    
    import flash.display.Stage;
    import flash.display.StageAlign;
    import flash.display.StageDisplayState;
    import flash.display.StageScaleMode;
    
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import caurina.transitions.Tweener;
    import flash.events.MouseEvent;
    import flash.text.TextField;
    import org.si.sion.SiONData;
    import org.si.sion.SiONDriver;
    import org.si.sion.SiONVoice;
    import org.si.sion.utils.SiONPresetVoice;

    public class Main extends MovieClip {

        private var mScaleArray:Array = ['c', 'd', 'e', 'f', 'g', 'a','b'];
        public var text_field:TextField = new TextField();            
        private var w:uint=stage.stageWidth-100;
        private var h:uint=stage.stageHeight;
        private var mtime:int=2;
        private var cnt:int;
        private var spList:Array=[];
        private var maxNum:int;
        public var driver:SiONDriver = new SiONDriver;
        public  var presetVoice:SiONPresetVoice = new SiONPresetVoice();
        // SiONVoice型変数を宣言
        public var voice1:SiONVoice;
        public var voice2:SiONVoice;
        // SiONData型変数を宣言
        public var mainMelody:SiONData;
        private var scaleMode:StageScaleMode;
        
        //constractor
        public function Main() {
             
            //stage.align = StageAlign.TOP_LEFT; 
            //stage.scaleMode = StageScaleMode.EXACT_FIT;
            //stage.scaleMode = "exactFit";

            stage.scaleMode = StageScaleMode.SHOW_ALL;
            stage.scaleMode = "showAll";
            
            text_field.text = 'state:';
            text_field.x = 200;
            addChild(text_field);
            
            var btn:Sprite = new Sprite();
            stage.addChild(btn);
            var g:Graphics = btn.graphics;
            //g.lineStyle ( 太さ , 線の色 , 透明度 , ヒンディング , "スケールモード" , "線の先の種類" , "線の角の種類" , マイター限度 );
            g.lineStyle (2 , 0xdddddd);
            g.beginFill(0xcccccc, 1.0);// 単一色のスタイル設定
            //角丸の場合 g.drawRoundRect ( x 座標 , y 座標 , 幅 , 高さ , 角丸部分の幅 , 角丸部分の高さ );
            g.drawRoundRect (10, 10, 50 , 10 , 10 , 10 );
            
            btn.buttonMode = true;
            btn.addEventListener(MouseEvent.CLICK, fn_click);
            btn.addEventListener(MouseEvent.ROLL_OUT,fn_rollout);
                        
            voice1 = presetVoice["valsound.piano8"];
            stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDown);
            //stage.addEventListener(KeyboardEvent.KEY_UP, KeyUp);
            
            maxNum = 100;
            
            for (var i:uint = 0; i < maxNum; i++) {
            cnt++
            circle();
            }
            
        }
        
        private function fn_rollout(e:MouseEvent):void 
        {
            text_field.text = 'state:';            
        }
        
        private function fn_click(e:MouseEvent):void 
        {
            text_field.text = 'state:click';
            
            stage.displayState = StageDisplayState.FULL_SCREEN;
            stage.displayState = "fullScreen";    
        }
        
        //
        public function KeyDown(e:KeyboardEvent):void {
        trace(e.keyCode);
        
        for (var i:uint = 0; i < maxNum; i++) {
        tween(spList[i], ran(w), ran(h), ran(10) / 10);
        }
        
        var len:int = mScaleArray.length;
        var setStr:String=mScaleArray[ran(len)];
        var _code:String="t"+(ran(20)+100)+"l8v10["+setStr+"4]1";
        text_field.text='code:'+setStr;
        
        mainMelody    = driver.compile(_code);
        driver.play();    
        // 第一引数にSiONData、第二引数にSiONVoice、第三引数以降は、length=0(play all of sequence), delay=0(no delay), quantize=2(8th beat)
        driver.sequenceOn(mainMelody, voice1, 0, 0, 2);

        
        /*switch(e.keyCode){
            case 38:
            mtime++
            break
            
            case 40:
            mtime--
            if(mtime<0){
                mtime=0
                }
            break
            
            }
        
        trace(e.keyLocation);
        trace(e.ctrlKey);
        trace(e.shiftKey);
        trace(e.altKey);*/
        
        }
        
        public function circle():void {
            var sp:Sprite=new Sprite  ;
            sp.graphics.beginFill(ran(0xFFFFFF));
            var circWith:Number=ran(50);
            sp.graphics.drawCircle(circWith,circWith,circWith);
            sp.graphics.endFill();
            addChild(sp);
            sp.x=ran(w);
            sp.y=ran(h);
            //sp.addEventListener(Event.ENTER_FRAME,fn_ef);
            
            spList[cnt - 1] = sp;
            
            tween(spList[cnt],ran(w),ran(h),ran(10)/10);
        }
        //

        public function tween(tg:Sprite,tx:uint,ty:uint,alf:Number):void {
            //_Blur_blurX:10, _Blur_blurY:10,
            Tweener.addTween(tg,{alpha:alf,x:tx,y:ty,time:ran(mtime) + 1,onComplete:twnEnd,onCompleteParams:[tg]});
        }
        public function twnEnd(tg:Sprite):void {
        //tween(tg,ran(w),ran(h),ran(10)/10);
        }
        
        public function ran(range:Number):Number {
            var v:uint=Math.floor(Math.random() * range);
            return v;
        }
        

        
    }
}