游手好学教程 – AS3游戏小地图的实现 MiniMap类

 

上周上线的游戏返回数据表明,我的游戏做的比较难,需要加个小地图降低难度,觉得实现小地图的方法还是比较简单的,而且在游戏中比较实用,拿来和大家分享下吧,实现方法其实就是根据缩放比率刷新小地图上人物的X,Y坐标。

实现的效果演示:

小地图类,MiniMap.as

/**
 * 游手好学游戏 – 小地图的实现
 * @author Vincent
 * @website www.8ria.com
 */

package 
{
 import flash.display.MovieClip;
 import flash.display.Sprite;

 public class MiniMap extends MovieClip
 {
  private var _rate : Number;
  private var _square : Sprite;
  private var _point : Sprite;
 
  public function MiniMap()
  {
   
  }
 
/**
 * 安装小地图
 * con 小地图的容器
 * bigWidth 大地图的宽度
 * bigHeight 大地图的高度
 * rate 地图缩放比率
 * alp 小地图的透明度
 */
 
  public function setupMiniMap(con : Object, bigWidth : Number, bigHeight : Number, rate : Number, alp : Number):void
  {
 //画小地图
    _square = new Sprite();
    _square.graphics.beginFill(0×000000);
    _square.graphics.drawRect(0, 0, bigWidth*rate, bigHeight*rate);
 _square.alpha = alp
 con.addChild(_square);
 //画点
    _point = new Sprite();
    _point.graphics.beginFill(0xFF0000);
    _point.graphics.drawCircle(4, 4, 4);
 con.addChild(_point);
    
    _rate = rate;
  }

 
/**
 * 刷新玩家位置
 * px 玩家的X坐标
 * py 玩家的X\Y坐标
 */
  public function updataMiniMap(px : Number, py : Number):void
  {
   _point.x = px * _rate;
   _point.y = py * _rate;
  }
 
 }
}

使用小地图类

第一安装MiniMap: 

_miniMap = new MiniMap();
_miniMap.setupMiniMap(this,stage.stageWidth,stage.stageHeight,0.25, 0.5);

第二,把_miniMap.updataMiniMap(_player.x,_player.y)放到游戏循环里,就是不断的刷新_player的X,Y坐标

我的文档类如下

/**
 * 游手好学游戏 – 小地图的实现
 * @author Vincent
 * @website www.8ria.com
 */

package{
 import flash.display.Sprite;
 import flash.display.MovieClip;
 import flash.events.Event;
 
 public class IndexDoc extends Sprite
 {
    private var _miniMap : MiniMap;
    private var _player : MovieClip;
   
    public function IndexDoc():void
    {
     initUI();
     initEvent();

    }
   
  private function initUI():void
  {
   
     _miniMap = new MiniMap();
     //安装小地图
     _miniMap.setupMiniMap(this,stage.stageWidth,stage.stageHeight,0.25, 0.5);
    
   _player = fly_mc;
  }
  
  private function initEvent():void
  {
     stage.addEventListener(Event.ENTER_FRAME, gameLoop);
  }
  
  private function gameLoop(e:Event):void
  {
   //刷新小地图
            _miniMap.updataMiniMap(_player.x,_player.y);
            flyHandler();
  }
  
  private function flyHandler():void
  {
      var dx : Number = mouseX – _player.x;
   var dy : Number = mouseY – _player.y; 

   _player.x += dx/10;
   _player.y += dy/10;
   
   var angle : Number = Math.atan2(dy, dx) * 180 / Math.PI;

   _player.rotation = angle + 90;
  }
  
 }
}


1 Star2 Stars3 Stars4 Stars5 Stars
Loading ... Loading ...

本站游戏文字均为个人原创,转载请注明转自 9STG.COM 游手好学并加上本站链接。更多经典游戏来自COMEONGAME.COM

收藏分享:

315 个玩家


你可能还喜欢

  • No Related Post

1 条评论


  1. 好玩99 says:

    嗯嗯,站长很厉害,我非常佩服!


发表回复