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

本帖最后由 greenidea 于 2009-12-5 23:01 编辑

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

实现的效果演示:
[flash]http://www.8ria.com/wp-content/uploads/2009/12/miniMap.swf[/flash]

小地图类,MiniMap.as
  1. /**
  2. * 游手好学游戏 – 小地图的实现
  3. * @author Vincent
  4. * @website www.8ria.com
  5. */
  6. package 
  7. {
  8. import flash.display.MovieClip;
  9. import flash.display.Sprite;
  10. public class MiniMap extends MovieClip
  11. {
  12.   private var _rate : Number;
  13.   private var _square : Sprite;
  14.   private var _point : Sprite;
  15.   public function MiniMap()
  16.   {
  17.    
  18.   }
  19. /**
  20. * 安装小地图
  21. * con 小地图的容器
  22. * bigWidth 大地图的宽度
  23. * bigHeight 大地图的高度
  24. * rate 地图缩放比率
  25. * alp 小地图的透明度
  26. */
  27.   public function setupMiniMap(con : Object, bigWidth : Number, bigHeight : Number, rate : Number, alp : Number):void
  28.   {
  29. //画小地图
  30.     _square = new Sprite();
  31.     _square.graphics.beginFill(0×000000);
  32.     _square.graphics.drawRect(0, 0, bigWidth*rate, bigHeight*rate);
  33. _square.alpha = alp
  34. con.addChild(_square);
  35. //画点
  36.     _point = new Sprite();
  37.     _point.graphics.beginFill(0xFF0000);
  38.     _point.graphics.drawCircle(4, 4, 4);
  39. con.addChild(_point);
  40.     
  41.     _rate = rate;
  42.   }
  43. /**
  44. * 刷新玩家位置
  45. * px 玩家的X坐标
  46. * py 玩家的X/Y坐标
  47. */
  48.   public function updataMiniMap(px : Number, py : Number):void
  49.   {
  50.    _point.x = px * _rate;
  51.    _point.y = py * _rate;
  52.   }
  53. }
  54. }
复制代码
使用小地图类

第一安装MiniMap: 

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

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

我的文档类如下
  1. /**
  2. * 游手好学游戏 – 小地图的实现
  3. * @author Vincent
  4. * @website www.8ria.com
  5. */
  6. package{
  7. import flash.display.Sprite;
  8. import flash.display.MovieClip;
  9. import flash.events.Event;
  10. public class IndexDoc extends Sprite
  11. {
  12.     private var _miniMap : MiniMap;
  13.     private var _player : MovieClip;
  14.    
  15.     public function IndexDoc():void
  16.     {
  17.      initUI();
  18.      initEvent();
  19.     }
  20.    
  21.   private function initUI():void
  22.   {
  23.    
  24.      _miniMap = new MiniMap();
  25.      //安装小地图
  26.      _miniMap.setupMiniMap(this,stage.stageWidth,stage.stageHeight,0.25, 0.5);
  27.     
  28.    _player = fly_mc;
  29.   }
  30.   
  31.   private function initEvent():void
  32.   {
  33.      stage.addEventListener(Event.ENTER_FRAME, gameLoop);
  34.   }
  35.   
  36.   private function gameLoop(e:Event):void
  37.   {
  38.    //刷新小地图
  39.             _miniMap.updataMiniMap(_player.x,_player.y);
  40.             flyHandler();
  41.   }
  42.   
  43.   private function flyHandler():void
  44.   {
  45.       var dx : Number = mouseX – _player.x;
  46.    var dy : Number = mouseY – _player.y; 
  47.    _player.x += dx/10;
  48.    _player.y += dy/10;
  49.    
  50.    var angle : Number = Math.atan2(dy, dx) * 180 / Math.PI;
  51.    _player.rotation = angle + 90;
  52.   }
  53.   
  54. }
  55. }
复制代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值