/**
* Copyright otherone ( http://wonderfl.net/user/otherone )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/maLI
*/
package {
import flash.display.Graphics;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;
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 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;
// SiONData型変数を宣言
public var mainMelody:SiONData;
private var scaleMode:StageScaleMode;
private var _keyBords:Sprite;
//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 = 100;
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 = 10;
_keyBords = new Sprite();
for (var i:uint = 0; i < maxNum; i++) {
cnt++
//(sw:Number,sh:Number,sx:Number,sy:Number,sc:Number,slc:Number,sltc:Number)
_keyBords.addChild(square(30,100,30*i,0,0xFFFFFF,0x555555,2));
}
_keyBords.x=50
_keyBords.y=200
addChild(_keyBords);
}
/*private function fn_rollout(e:MouseEvent):void
{
text_field.text = 'state:';
}*/
private function fn_click(e:MouseEvent):void
{
text_field.text = 'state:click'+ e.target.name;
//stage.displayState = StageDisplayState.FULL_SCREEN;
//stage.displayState = "fullScreen";
}
//
public function KeyDown(e:KeyboardEvent):void {
var len:int = mScaleArray.length;
var setStr:String = '';//mScaleArray[ran(len)];
switch(e.keyCode) {
case 90:
setStr = 'c';//Z
break
case 88:
setStr = 'd';//X
break
case 67:
setStr = 'e';//C
break
case 86:
setStr = 'f';//V
break
case 66:
setStr = 'g';//B
break
case 78:
setStr = 'a';//N
break
case 77:
setStr = 'b';//M
break
case 188:
setStr ='o<c'//,
break
}
var _code:String="t"+(ran(20)+100)+"l8v10["+setStr+"4]1";
text_field.text='code:'+e.keyCode;
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);
}
public function square(sw:Number,sh:Number,sx:Number,sy:Number,sc:Number,slc:Number,sltc:Number):Sprite {
var sp:Sprite=new Sprite ;
var g:Graphics = sp.graphics
g.lineStyle ( sltc ,slc)
g.beginFill(sc)//(ran(0xFFFFFF));
g.drawRect(sx, sy, sw, sh);// 矩形を描画( x 座標 , y 座標 , 幅 , 高さ );
g.endFill();
//spList[cnt - 1] = sp;
sp.name = String(cnt);
sp.addEventListener(MouseEvent.CLICK, fn_click);
return sp;
}
//
/*
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;
}
}
}