首页  韩国资源  酷站加油  我的展厅  设计名站  古典元素  推荐下载  设计欣赏  每周专访  招募精英  人才专区  网页教程  平面设计  编程开发  设计竞赛
当前位置:首页 > 网页教程 > Flash教程 > 正文
Google
Flash AS实现的迷宫视觉效果
来源:网页教学网 作者:闪电儿 2007年07月04日 16:33 网友评论:0条 点击:

完全是由Flash Actionscript实现的一个迷宫图效果。

演示:

/UploadTeach/200707/2007070217158461.swf

源文件:迷宫图.rar

打开Flash,新建立一个文档,然后修改属性,把帧频调整到25。然后直接在第一帧输入下面Action:

// maze width
dim_x = 48;
// maze height
dim_y = 28;
// wall lenght
wall_size = 10;
cell_count = dim_x*dim_y;
var maze = new Array();
var mymoves = new Array();
for (x=0; x<cell_count; x++) {
 maze[x] = new Array(0, 1, 1, 1);
 // array contains VISITED (0 = not visited), MORTH WALL (1=up;0=down), SOUTH WALL, EAST WALL, WEST WALL
}
// start position
pos = Math.round(Math.random()*(cell_count-1));
// cells visited
visited = 1;
// mark first cell as visited
maze[pos][0] = 1;
while (visited<cell_count) {
 // check for possible moves
 possible = "";
 if ((Math.floor(pos/dim_x) == Math.floor((pos-1)/dim_x)) and (maze[pos-1][0] == 0)) {
  possible = possible+"W";
 }
 if ((Math.floor(pos/dim_x) == Math.floor((pos+1)/dim_x)) and (maze[pos+1][0] == 0)) {
  possible = possible+"E";
 }
 if (((pos+dim_x)<cell_count) and (maze[pos+dim_x][0] == 0)) {
  possible = possible+"S";
 }
 if (((pos-dim_x)>=0) and (maze[pos-dim_x][0] == 0)) {
  possible = possible+"N";
 }
 // if a move exists, crash a wall and mark new cell as visited    
 if (possible) {
  visited++;
  mymoves.push(pos);
  way = possible.charAt(Math.round(Math.random()*(possible.length-1)));
  switch (way) {
  case "N" :
   maze[pos][1] = 0;
   maze[pos-dim_x][2] = 0;
   pos -= dim_x;
   break;
  case "S" :
   maze[pos][2] = 0;
   maze[pos+dim_x][1] = 0;
   pos += dim_x;
   break;
  case "E" :
   maze[pos][3] = 0;
   maze[pos+1][4] = 0;
   pos++;
   break;
  case "W" :
   maze[pos][4] = 0;
   maze[pos-1][3] = 0;
   pos--;
   break;
  }
  maze[pos][0] = 1;
  // else backtrack to previous visited cell
 } else {
  pos = mymoves.pop();
 }
}
// maze drawing
this.createEmptyMovieClip("drawmaze", 10);
drawmaze.lineStyle(0, 0x000000, 100);
drawmaze.moveTo(10, 10);
start_y = 10-wall_size;
start_x = 0;
for (x=0; x<cell_count; x++) {
 start_x += wall_size;
 if ((x%dim_x) == 0) {
  start_y += wall_size;
  start_x = 10;
 }
 if (maze[x][2] == 1) {
  // south
  drawmaze.moveTo(start_x, start_y+wall_size);
  drawmaze.lineTo(start_x+wall_size, start_y+wall_size);
  //drawmaze.moveTo(start_x, start_y);
 }
 if (maze[x][3] == 1) {
  // east
  drawmaze.moveTo(start_x+wall_size, start_y);
  drawmaze.lineTo(start_x+wall_size, start_y+wall_size);
  //drawmaze.moveTo(start_x, start_y);
 }
}
drawmaze.lineStyle(0, 0xff0000, 100);
drawmaze.moveTo(10, 10);
drawmaze.lineTo(10+wall_size*dim_x, 10);
drawmaze.lineTo(10+wall_size*dim_x, 10+wall_size*dim_y);
drawmaze.lineTo(10, 10+wall_size*dim_y);
drawmaze.lineTo(10, 10);

测试吧!

上一篇:用Flash制作印章   下一篇:FLASH特效--下雪
收藏此页】【打印】【关闭
 相关文章  我要点评

免责声明:本站刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。对本文有任何异议,请联络:68design#163.com
转载要求:作者及来源信息必需保留。转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印。



关于我们 | 在线反馈 | 广告报价 | 友情链接 | 联系我们 | 免责声明 | 在线投稿 | 网站地图
Copyright © 2003-2007 68design.net, All Rights Reserve 【找网页设计师,当然上网页设计师联盟】