マウスホイールイベントの実験

by seino forked from 変なもの。 (diff: 25)
最初にしたかったことと大幅にズレてしまい結局もう何が何だか。
♥0 | Line 76 | Modified 2010-05-30 23:28:29 | MIT License
play

ActionScript3 source code

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

// forked from kagetiyo523's 変なもの。
//最初にしたかったことと大幅にズレてしまい結局もう何が何だか。
package {
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.utils.Timer;
    public class RingCommand extends Sprite {

         public function RingCommand():void {

    	       for(var i:int=0;i<30;i++){
               var menuRing:Sprite = new MenuRing(stage.stageWidth * Math.random(),stage.stageHeight * Math.random());
               
               var rdm:Number = Math.random();  
               menuRing.scaleX *= rdm;
               menuRing.scaleY *= rdm;  
               stage.addChild(menuRing);
           }
        }
        
    }
}

  import flash.display.Sprite;
  import flash.utils.Timer;
  import flash.events.TimerEvent;
  import flash.events.MouseEvent;
  class MenuRing extends Sprite{
  	private const distance:int = 15;//中心点からの距離
  	private var btnArr:Array = new Array;
  	
     public function MenuRing(centerX:int,centerY:int):void{
            
            var ragian:int;
            var timer:Timer;
            var cnt:int = 0;
            
            
            x = centerX;
            y = centerY;
            
            for(var i:int=0;i<5;i++){
               var spr:Sprite = new MenuButton();

            	   btnArr.push(spr);
            	}
            
           ragian = Math.round(360 / btnArr.length);//360を超えないでください><
            
           timer = new Timer(100);
           timer.addEventListener("timer", function():void{
                                            btnArr[cnt].setting(distance,ragian*(cnt+1));
                                            addChild(btnArr[cnt]);
                                            cnt++;
                                            if(cnt == btnArr.length){
                                               timer.removeEventListener("timer", arguments.callee);
                                               timer.stop();
                                               stage.addEventListener(MouseEvent.MOUSE_WHEEL,onMouseWheel);
                                            }
                                           });
           timer.start();

        
     }
     
     private function onMouseWheel(e:MouseEvent):void{
     	rotationZ += e.delta;
     }
  
  }

    import flash.display.Sprite;
    import flash.events.Event;
    class MenuButton extends Sprite{
    private var gX:int = 0;
    private var gY:int = 0;
    //引数に画像とか使えるようにしたい。
    public function MenuButton(){
      graphics.beginFill(0xff6699,1);
      graphics.drawCircle(0,0,10);
      graphics.endFill();
    }
    
    public function setting(distance:int,ragian:int):void{   
      gX = x + Math.cos(ragian * Math.PI / 180) * distance;
      gY = y + Math.sin(ragian * Math.PI / 180) * distance;
      addEventListener(Event.ENTER_FRAME,positionSet);
    }
    
    public function positionSet(e:Event):void{
       x = (x + gX) /2;
       y = (y + gY) /2;
       if(Math.round(y) == gY && Math.round(x) == gX){
          y = gY;
          x = gX;
          removeEventListener(Event.ENTER_FRAME ,positionSet);
        }
     }

    }