/**
* 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;
}
}
}