[ create a new paste ] login | about

Link: http://codepad.org/5pNKkq0J    [ raw code | fork ]

Plain Text, pasted on Dec 12:
package{
  import flash.display.MovieClip;
  import flash.display.Sprite;
  import flash.display.Loader;
  import flash.net.URLRequest;
  import flash.utils.Timer;
  import flash.geom.Point;
  import flash.events.TimerEvent;
  import flash.events.MouseEvent;
  
  public class Map extends MovieClip{
    var bairitsu: Number;
    var mapSprite: Sprite;  
    var mapImage: Array;  
    var draggingNow: Boolean;  
    var mapLoc: Point;  
    const maxBairitsu: Number = 4;  
    const minBairitsu: Number = 1;  
    const unitWidth: Number = 1024;  
    const unitHeight: Number = 640;  
    
    var timer: Timer;
    
    function Map(){
      this["kakudaiBt"].buttonMode = true;
      this["kakudaiBt"].useHandCursor = true;
      this["kakudaiBt"].addEventListener(MouseEvent.CLICK, onKakudai);
      this["shukushoBt"].buttonMode = true;
      this["shukushoBt"].useHandCursor = true;
      this["shukushoBt"].addEventListener(MouseEvent.CLICK, onShukusho);
      
      bairitsu = minBairitsu;
      draggingNow = false;
      mapLoc = new Point(0, 0);
      
      mapSprite = new Sprite();
      this.addChildAt(mapSprite, 0);
      mapSprite.mouseChildren = false;
      mapSprite.doubleClickEnabled = true;
      mapSprite.addEventListener(MouseEvent.DOUBLE_CLICK, onDoubleClicked);
      mapSprite.addEventListener(MouseEvent.MOUSE_DOWN, onMDown);
      mapSprite.addEventListener(MouseEvent.MOUSE_UP, onMUp);
      
      mapImage = new Array();
      for(var i: Number = minBairitsu; i <= maxBairitsu; ++i){
        mapImage[i] = new Sprite();
        for(var m: Number = 0; m < i; ++m){
          for(var n: Number = 0; n < i; ++n){
            var imgLoader:Loader = new Loader();
            imgLoader.x = m*unitWidth;
            imgLoader.y = n*unitHeight;
            mapImage[i].addChild(imgLoader);
            var urlReq:URLRequest = new URLRequest("maps/map"+i+"00-"+m+"-"+n+".png");
            imgLoader.load(urlReq);
          }
        }
        mapImage[i].alpha = 0;
        mapImage[i].scaleX = mapImage[i].scaleY = 1/i;
        mapSprite.addChild(mapImage[i]);
      }
      
      timer = new Timer(33);
      timer.addEventListener(TimerEvent.TIMER, loop);
      timer.start();
    }
    
    function onDoubleClicked(event:MouseEvent):void{
      var oldBai: Number = bairitsu;
      if(event.shiftKey)  bairitsu -= 1;
      else        bairitsu += 1;
      if(bairitsu > maxBairitsu)  bairitsu = maxBairitsu;  
      if(bairitsu < minBairitsu)  bairitsu = minBairitsu;  
      mapLoc.x = mapLoc.x - (event.target.mouseX*bairitsu - event.target.mouseX*oldBai);
      mapLoc.y = mapLoc.y - (event.target.mouseY*bairitsu - event.target.mouseY*oldBai);
    }
    
    function onKakudai(event:MouseEvent):void{
      var oldBai: Number = bairitsu;
      bairitsu += 1;
      if(bairitsu > maxBairitsu)  bairitsu = maxBairitsu;  
      mapLoc.x = stage.stageWidth/2 - ((stage.stageWidth/2 - mapLoc.x)/oldBai)*bairitsu;
      mapLoc.y = stage.stageHeight/2 - ((stage.stageHeight/2 - mapLoc.y)/oldBai)*bairitsu;
    }

    function onShukusho(event:MouseEvent):void{
      var oldBai: Number = bairitsu;
      bairitsu -= 1;
      if(bairitsu < minBairitsu)  bairitsu = minBairitsu;  
      mapLoc.x = stage.stageWidth/2 - ((stage.stageWidth/2 - mapLoc.x)/oldBai)*bairitsu;
      mapLoc.y = stage.stageHeight/2 - ((stage.stageHeight/2 - mapLoc.y)/oldBai)*bairitsu;
    }

    function onMDown(event:MouseEvent):void{
      mapSprite.startDrag();
      draggingNow = true;
    }

    function onMUp(event:MouseEvent):void{
      mapSprite.stopDrag();
      mapLoc.x = mapSprite.x;
      mapLoc.y = mapSprite.y;
      draggingNow = false;
    }

    function loop(event:TimerEvent):void{
      if(bairitsu == maxBairitsu){
        this["kakudaiBt"].alpha += (0 - this["kakudaiBt"].alpha)/10;
      }else{
        this["kakudaiBt"].alpha += (1 - this["kakudaiBt"].alpha)/10;
      }
      if(bairitsu == minBairitsu){
        this["shukushoBt"].alpha += (0 - this["shukushoBt"].alpha)/10;
      }else{
        this["shukushoBt"].alpha += (1 - this["shukushoBt"].alpha)/10;
      }
      
      if(!draggingNow){
        mapSprite.x += (mapLoc.x - mapSprite.x)/4;
        mapSprite.y += (mapLoc.y - mapSprite.y)/4;
      }
      
      mapSprite.scaleX += (bairitsu - mapSprite.scaleX)/4;
      mapSprite.scaleY += (bairitsu - mapSprite.scaleY)/4;
      
      for(var i: Number = minBairitsu; i <= maxBairitsu; ++i){
        if(i == minBairitsu){
          mapImage[i].alpha += (1 - mapImage[i].alpha)/4;
        }else{
          if(bairitsu == i){  
            mapImage[i].alpha += (1 - mapImage[i].alpha)/4;
          }else{
            mapImage[i].alpha += (0 - mapImage[i].alpha)/4;
          }
        }
      }
    }
  }
}


Create a new paste based on this one


Comments: