1、采用的框架开发流程层次分配格子格子存储与定义格子上的地图地图分块加载与滚动A*算法心跳控制资源格式资源加载事物的架构人物换装人物移动跟随战斗宠物其它UI MVC 通信AsWing PureMVC Socket(自定义协议 )加载器加载中心服务器加载配置文件预加载素材角色列表游戏Main.swfLoad.swf弹出窗口角色信息、聊天、菜单、雷达、快捷菜单地图背景玩家、 NPC、场景效果、技能效果、传送阵W : H = 2 : 1W:格子宽度H:格子高度存储 :通过一个二维数组存放格子数据如 :1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,
2、1, 1,0,0,0,2,0,0,0,1, 1,0,0,2,2,2,0,0,1, 1,0,0,2,2,2,0,0,1, 1,0,0,0,2,0,0,0,1, 1,0,0,0,0,0,0,0,1, 1,1,1,1,1,1,1,1,1定义 :0可走1不可走2透明格子坐标转成地图像素坐标 :x = (px - (py - offsetY) * w/ 2;y = (px + (py - offsetY) * h / 2; offsetY:4地图像素坐标转成格子坐标:px = Math.ceil(x / w - 0.5 + y / h);py = offsetY - Math.ceil(x / w -
3、0.5 - y / h);两个格子之间的距离:dx = p1.x - p2.x; dy = p1.y - p2.y;Math.sqrt(0.8 * Math.pow(dx - dy, 2) + 0.2 * Math.pow(dx + dy, 2)0_0 0_1 0_2 0_3 0_41_0 1_1 1_2 1_3 1_42_0 2_1 2_2 2_3 2_43_0 3_1 3_2 3_3 3_4地图分块命名0_0 0_1 0_2 0_3 0_41_0 1_1 1_2 1_3 1_42_0 2_1 2_2 2_3 2_43_0 3_1 3_2 3_3 3_4当前屏幕地图显示根据地图坐标算出当前屏
4、幕上所要显示的地图分块坐标,并依次加载。根据地图坐标算出屏幕上所要显示的地图分块坐标,并从 加载类 中取出这些分块图片的 BitmapData,通过 copyPixels复制 地图显示 上去。未下载好的分块则从缩略图取。地图显示加载类绘制类加载完成通知取数据通知加载图片网上相关介绍有很多,也有很多种强化方法。在这里主要介绍 A*算法结合二叉树12 54 8二叉树结构图原理:由于 A*算法会频繁的对数据遍历得到最小值,通过二叉树可以节省遍历,快速得到最小值,速度比原来提高了 30%,格子越多,效果越明显。二叉树存储方式: 1, 2, 5, 4, 8,数组中第一位是它的最小值TimerENTER_FRAMEsetInterval()setTimeout()FrameTimer心跳机制: Event.ENTER_FRAME提供方法:add(delay:int, repeat:int, fun:Function)remove(fun:Function)优点:综合管理;避免产生太多的 Timer,导制性能下降