In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

ling

Get Adobe Flash player
by lapin 21 Apr 2009
package{
  import flash.display.MovieClip;
  import flash.display.Loader;
  import flash.display.Sprite;

  import flash.events.Event;
  import flash.events.MouseEvent;
  import flash.events.TimerEvent;

  import flash.geom.Point;
  import flash.utils.Timer;
  import flash.net.URLRequest;
  
  public class RotateMenu extends MovieClip{
    var floorObj: Sprite;
    var obj: Array;
    var maskObj: Array;
    var clickedNum: int = -1;
    var angle: Number = 0;
    var timer:Timer;  
    const hankei: Number = 150;
    
    function RotateMenu(){
      obj = new Array();
      maskObj = new Array();
      
      for(var i: Number = 0; i < 12; ++i){
        obj.push(new Sprite());
        var num: Number = obj.length-1;
        this.addChild(obj[num]);

        obj[num].buttonMode = true;
        obj[num].useHandCursor = true;
        
        obj[num].name = String(num);
        obj[num].x = this.stage.stageWidth/2;
        obj[num].y = this.stage.stageHeight/2;
        obj[num].scaleX = 0;
        obj[num].scaleY = 0;
        obj[num].graphics.clear();
        obj[num].graphics.lineStyle(0, 0, 0);
        obj[num].graphics.beginFill(0xFF0000);
        obj[num].graphics.drawCircle(0, 0, 100);
        obj[num].graphics.endFill();
        obj[num].alpha = 100;
        obj[num].addEventListener(MouseEvent.CLICK, onClick);

      }
      
      floorObj = new Sprite();
      floorObj.graphics.clear();
      floorObj.graphics.lineStyle(0, 0, 0);
      floorObj.graphics.beginFill(0xFF0000);
      floorObj.graphics.drawRect(0, 0, this.stage.stageWidth, this.stage.stageHeight);
      floorObj.graphics.endFill();
      floorObj.alpha = 0;

      floorObj.addEventListener(MouseEvent.CLICK, onFloorClick);
      this.addChildAt(floorObj, 0);
        
      timer = new Timer(33);
      timer.addEventListener(TimerEvent.TIMER, loop);
      timer.start();
    }
    
    function onImageLoaded(event:Event):void{
      event.target.loader.x = -event.target.loader.width/2;
      event.target.loader.y = -event.target.loader.height/2;
      var num: int = int(event.target.loader.parent.name);
      maskObj[num].graphics.clear();
      maskObj[num].graphics.lineStyle(0, 0, 0);
      maskObj[num].graphics.beginFill(0xFF0000);
      maskObj[num].graphics.drawCircle(0, 0, Math.min(event.target.loader.width/2, event.target.loader.height/2));
      maskObj[num].graphics.endFill();
      maskObj[num].alpha = 100;

    }
    
    function onClick(event:MouseEvent):void{
      if(clickedNum == int(event.target.name)){
        clickedNum = -1;
      }else{
        clickedNum = int(event.target.name);
      }
    }
    
    function onFloorClick(event:MouseEvent):void{
      clickedNum = -1;
    }
    
    function loop(event:TimerEvent):void{
      angle += 0.01;
      
      for(var i:Number = 0; i < obj.length; i++){  
        var ichi: Point = new Point();
        var ookisa: Number;

        if(clickedNum == i){
          ichi.x = this.stage.stageWidth/2;
          ichi.y = this.stage.stageHeight/2;
          ookisa = 0.8;
        }else{
          ichi.x = this.stage.stageWidth/2 + hankei*Math.cos(angle + i/obj.length*Math.PI*2);
          ichi.y = this.stage.stageHeight/2 + hankei*Math.sin(angle + i/obj.length*Math.PI*2);
          ookisa = 0.3;
        }
        obj[i].x += (ichi.x - obj[i].x)/5;
        obj[i].y += (ichi.y - obj[i].y)/5;
        obj[i].scaleX += (ookisa - obj[i].scaleX)/5;
        obj[i].scaleY += (ookisa - obj[i].scaleY)/5;
      }
    }
  }
}