市松模様

by seino
最初にしたかったことと大幅にズレてしまい結局もう何が何だか。
♥0 | Line 89 | Modified 2010-05-28 10:19:33 | 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/n5rc
 */

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

         public function RingCommand():void {
           var timer:Timer;
    	       var cnt:int = 0;
           stage.addEventListener(MouseEvent.CLICK,mouseClick);
           timer = new Timer(500);
           timer.addEventListener("timer", function():void{
           	                                 var dist:int = 20;
           	                                 for(var i:int=0;i<= stage.stageWidth;i+=dist){
           	                                 	  var menuRing:Sprite = new MenuRing(i,cnt*dist-dist/2);//カオス。
           	                                 	  menuRing.alpha = 1/cnt;
           	                                   stage.addChild(menuRing);
           	                                 	}
                                              cnt++;
                                              if(cnt*dist >= stage.stageWidth || cnt*dist >= stage.stageHeight){
                                                stage.removeEventListener("timer", arguments.callee);
                                                timer.stop();
                                              }
                                           });
           timer.start();
        }
        
        //本来の目的の名残
        public function mouseClick(e:MouseEvent):void{
           var menuRing:Sprite = new MenuRing(stage.mouseX,stage.mouseY);
           stage.addChild(menuRing);
        }
    }
}

  import flash.display.Sprite;
  import flash.geom.Point;
  import flash.utils.Timer;
  import flash.events.TimerEvent;
  class MenuRing extends Sprite{
     public function MenuRing(centerX:int,centerY:int):void{
            const distance:int = 10;
            var cPoint:Point = new Point(centerX,centerY); //中心ポイント
            var ragArr:Array = new Array(); //各ボタンが移動するべき角度を入れる配列
            var ragian:int;
            var timer:Timer;
            var cnt:int = 0;
            
            var btnArr:Array = new Array;
            
            for(var i:int=0;i<4;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].x = cPoint.x - (btnArr[cnt].width / 2);
                                            btnArr[cnt].y = cPoint.y - (btnArr[cnt].height / 2);
                                            btnArr[cnt].setting(distance,ragian*(cnt+1));
                                            addChild(btnArr[cnt]);
                                            cnt++;
                                            if(cnt == btnArr.length){
                                               stage.removeEventListener("timer", arguments.callee);
                                               timer.stop();
                                            }
                                           });
           timer.start();

        
     }
     
  
  }

    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(0x000000,1);
      graphics.drawRect(0,0,10,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);
        }
     }

    }

Forked