`
wangangie8
  • 浏览: 43466 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

初级A*寻路flash教程

阅读更多

经过我的优化后,速度比原来快了很多,但比起版主的还是慢.还要继续努力.不过终于是入AS3的门了.
var w:uint = 60;//地图横节点个数
var h:uint = 35;//地图纵节点个数
var r:uint = 10;//节点的长宽
var isEight:Boolean = true;//是否为八方向寻路
var time:uint;//记录时间
var field:MovieClip=new MovieClip();//地图
addChild(field);
var allNode:Array = new Array();//所有节点
var start_Piont:MovieClip;//寻路出发点
var end_Piont:MovieClip;//寻路目的地
var open_arr:Array;//开放列表
var block_arr:Array;//关闭列表
var path_arr:Array;//路径
var fail:Boolean = false;//是否找到路径
var isRun:Boolean = false;//是否正在寻路
init(field);
type_mc.addEventListener(MouseEvent.CLICK, typeHandler);
reset_mc.addEventListener(MouseEvent.CLICK, resetHandler);
//初始化地图
function init(field:MovieClip) {
for (var y:uint=0; y.25||(x==0&&y==0)?1:2);
   //如果可以通过就添加点击事件
   if (allNode[y][x].currentFrame == 1) {
    allNode[y][x].addEventListener(MouseEvent.CLICK, setEndPiont);
   }
  }
}
field.x = 30;//Math.floor((stage.stageWidth-field.width)/2);
field.y = 10;//Math.floor((stage.stageHeight-field.height)/2)-10;
}
//节点被点击时之事件
function setEndPiont(e:MouseEvent):void {
if (!isRun) {
  isRun = true;
  //清除之前计算的节点
  for (var y:uint=0; y2) {
     allNode[y][x].gotoAndStop(1);
    }
   }
  }
  //开始计时
  time = getTimer();
  open_arr = new Array();
  block_arr = new Array();
  path_arr = new Array();
  //如果是第一次寻路,出发点是左上角,否则是上一次寻路的终点
  start_Piont = end_Piont == null ? allNode[0][0] : end_Piont;
  end_Piont = e.currentTarget;
  //开始寻找
  checkNeighbor(start_Piont);
}
}
//检测周围的节点
function checkNeighbor(node:MovieClip):void {
var thisNode:MovieClip = node;//当前正在检测的节点
var getEnd:Boolean = false;//是否找到目的地
//循环直到找到目的地
while (!getEnd) {
  //将当前正在检测的节点存入关闭列表
  block_arr.push(thisNode);
  var checkList:Array = new Array();//当前节点的周围
  //如果是八方向寻路,就加入四个角
  if (isEight) {
   if (thisNode.py>0 && thisNode.px>0) {
    checkList.push(allNode[(thisNode.py-1)][(thisNode.px-1)]);
   }
   if (thisNode.py0) {
    checkList.push(allNode[(thisNode.py+1)][(thisNode.px-1)]);
   }
   if (thisNode.py>0 && thisNode.px
本文转自:http://www.5uflash.com/flashjiaocheng/Flashaschengxu/548.html
分享到:
评论

相关推荐

    A*寻路算法 源码

    没积分了,下不了资源,只求一分,A*寻路算法 源码 c#

    cocos creator 实现A*寻路

    使用javascript在cocos creator上实现了A*寻路算法,使用方块格表示起始点以及障碍路径等,动态调整行列数,障碍物密度,初始点坐标,实现鼠标点击计算起始点到点击位置方块的路径。

    六边形A*寻路算法源码(As3版本)

    六边形A*寻路算法源码(As3版本)在六边形战棋类游戏中可以使用

    Python版的A*寻路算法

    Python2.x版的A*寻路算法,实现了基本的A*算法,可以显示寻路图,测试运行pathFinder.py,输入地图文件a_map.txt,起点7,0 终点7,9

    A*自动寻路算法实现(java)

    下载本程序仅可演示A*自动寻路算法实现(java),该程序是基于我写的网络版贪吃蛇基础上编写的(网络版贪吃蛇...wasd键控制太阳的方向,鼠标左击目的地,会根据A*自动寻路算法计算出一条最优路线,太阳按最优路线移动。

    A*寻路算法

    A*寻路算法实现,模拟寻路算法,描述了A*寻路算法的具体实现可以在unity运作文件,可以到看到A*寻路算法的原理

    unityAStar寻路 A星 A*寻路算法Demo

    基于Unity5.4.4版本,随机障碍物,动态实现寻路,UnityA星寻路完整Demo

    A*寻路算法C#

    A*寻路算法,提供顶点信息矩阵和移动消耗矩阵,返回最短路径顶点列表

    C# A*寻路算法 带测试界面

    C# A*寻路算法 带测试界面

    AS3最好的A*寻路算法()

    AS3最好的A*寻路算法 (优化去除多余拐点并能寻找障碍最近可行走点)

    A*寻路算法源码 附带桌面演示工具

    A*算法是自动寻路的理想解决办法 像自动寻找NPC 自动寻找地图出口 我写的这个只是简单的实现了功能 在运算效率上没有做优化 在接下来的版本中我会增加二*堆算法 来提高A*算法的效率 请大家多多关注 包中还有一个我用...

    一个A*寻路算法

    A*寻路算法,只是保证在低消耗的情况在最短的时间找出路径,但A*寻路算法寻出来的路不一定是最近,但也绝对不会远的离谱,可也不排除你对路径评分算法的优化可以做到最快最短最低消耗,或者对最终路径的优化来达到...

    unity A*寻路插件

    unity A*寻路插件 A Pathfinding Project Pro v3.7.unitypackage

    A*走路 自动寻路A*算法 易语言源码优化版

    A*走路 自动寻路A*算法 易语言源码优化版 A*走路 自动寻路A*算法 易语言源码优化版 A*走路 自动寻路A*算法 易语言源码优化版

    A*寻路算法《三》

    详细的介绍了A*寻路算法,并且在unity中进行效果实现。

    A*寻路 -- 更加真实 的路径(二)

    NULL 博文链接:https://chaimzane.iteye.com/blog/1629053

    a*寻路demo

    a*寻路例子

    a*寻路 c++实现

    a*寻路算法, 八方向 ,c++ 二叉堆 实现,vs2010下可直接编译运行 可用于游戏寻路等 注:这是某开源代码的修正版,原版有错误和无意义代码,不能发就算了

    a*寻路算法ios实现过程

    a*寻路算法ios实现过程,用简练的代码最容易的说明问题全部; 描述:带2叉堆的A*寻路算法,地图为30*20的方格,可点击更换地图,可指定起始点和目的地。 因为是用以前自己参加acm时的代码,所以数据计算部分使用的...

Global site tag (gtag.js) - Google Analytics