Flash AS实现的迷宫视觉效果
</script></div><P>完全是由Flash Actionscript实现的一个迷宫图效果。</P><P>演示:</P><P align=center><OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0 height=300 width=500 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000><PARAM NAME="_cx" VALUE="13229"><PARAM NAME="_cy" VALUE="7938"><PARAM NAME="FlashVars" VALUE=""><PARAM NAME="Movie" VALUE="http://www.webjx.com//upfiles/20070630/20070630234036_webjxcom.swf"><PARAM NAME="Src" VALUE="http://www.webjx.com//upfiles/20070630/20070630234036_webjxcom.swf"><PARAM NAME="WMode" VALUE="Window"><PARAM NAME="Play" VALUE="0"><PARAM NAME="Loop" VALUE="-1"><PARAM NAME="Quality" VALUE="High"><PARAM NAME="SAlign" VALUE=""><PARAM NAME="Menu" VALUE="-1"><PARAM NAME="Base" VALUE=""><PARAM NAME="AllowScriptAccess" VALUE=""><PARAM NAME="Scale" VALUE="ShowAll"><PARAM NAME="DeviceFont" VALUE="0"><PARAM NAME="EmbedMovie" VALUE="0"><PARAM NAME="BGColor" VALUE=""><PARAM NAME="SWRemote" VALUE=""><PARAM NAME="MovieData" VALUE=""><PARAM NAME="SeamlessTabbing" VALUE="1"><PARAM NAME="Profile" VALUE="0"><PARAM NAME="ProfileAddress" VALUE=""><PARAM NAME="ProfilePort" VALUE="0"><PARAM NAME="AllowNetworking" VALUE="all"><PARAM NAME="AllowFullScreen" VALUE="false"><embed src=/upfiles/20070630/20070630234036_webjxcom.swf pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' type='application/x-shockwave-flash' width=500 height=300></embed></OBJECT></P><P>源文件:<A href="http://www.webjx.com/upfiles/20070630/20070630234129_webjxcom.fla" target=_blank><FONT color=#ff0000><B>点击这里下载源文件</B></FONT></A></P><P>打开Flash,新建立一个文档,然后修改属性,把帧频调整到25。</P><P>然后直接在第一帧输入下面Action:</P><P class=code>// maze width<BR>dim_x = 48;<BR>// maze height<BR>dim_y = 28;<BR>// wall lenght<BR>wall_size = 10;<BR>cell_count = dim_x*dim_y;<BR>var maze = new Array();<BR>var mymoves = new Array();<BR>for (x=0; x<CELL_COUNT; {<BR x++)> maze[x] = new Array(0, 1, 1, 1);<BR> // array contains VISITED (0 = not visited), MORTH WALL (1=up;0=down), SOUTH WALL, EAST WALL, WEST WALL<BR>}<BR>// start position<BR>pos = Math.round(Math.random()*(cell_count-1));<BR>// cells visited<BR>visited = 1;<BR>// mark first cell as visited<BR>maze[pos][0] = 1;<BR>while (visited<CELL_COUNT) {<BR> // check for possible moves<BR> possible = "";<BR> if ((Math.floor(pos/dim_x) == Math.floor((pos-1)/dim_x)) and (maze[pos-1][0] == 0)) {<BR> possible = possible+"W";<BR> }<BR> if ((Math.floor(pos/dim_x) == Math.floor((pos+1)/dim_x)) and (maze[pos+1][0] == 0)) {<BR> possible = possible+"E";<BR> }<BR> if (((pos+dim_x)<CELL_COUNT) {<BR 0)) (maze[pos+dim_x][0]="=" and> possible = possible+"S";<BR> }<BR> if (((pos-dim_x)>=0) and (maze[pos-dim_x][0] == 0)) {<BR> possible = possible+"N";<BR> }<BR> // if a move exists, crash a wall and mark new cell as visited <BR> if (possible) {<BR> visited++;<BR> mymoves.push(pos);<BR> way = possible.charAt(Math.round(Math.random()*(possible.length-1)));<BR> switch (way) {<BR> case "N" :<BR> maze[pos][1] = 0;<BR> maze[pos-dim_x][2] = 0;<BR> pos -= dim_x;<BR> break;<BR> case "S" :<BR> maze[pos][2] = 0;<BR> maze[pos+dim_x][1] = 0;<BR> pos += dim_x;<BR> break;<BR> case "E" :<BR> maze[pos][3] = 0;<BR> maze[pos+1][4] = 0;<BR> pos++;<BR> break;<BR> case "W" :<BR> maze[pos][4] = 0;<BR> maze[pos-1][3] = 0;<BR> pos--;<BR> break;<BR> }<BR> maze[pos][0] = 1;<BR> // else backtrack to previous visited cell<BR> } else {<BR> pos = mymoves.pop();<BR> }<BR>}<BR>// maze drawing<BR>this.createEmptyMovieClip("drawmaze", 10);<BR>drawmaze.lineStyle(0, 0x000000, 100);<BR>drawmaze.moveTo(10, 10);<BR>start_y = 10-wall_size;<BR>start_x = 0;<BR>for (x=0; x<CELL_COUNT; {<BR x++)> start_x += wall_size;<BR> if ((x%dim_x) == 0) {<BR> start_y += wall_size;<BR> start_x = 10;<BR> }<BR> if (maze[x][2] == 1) {<BR> // south<BR> drawmaze.moveTo(start_x, start_y+wall_size);<BR> drawmaze.lineTo(start_x+wall_size, start_y+wall_size);<BR> //drawmaze.moveTo(start_x, start_y);<BR> }<BR> if (maze[x][3] == 1) {<BR> // east<BR> drawmaze.moveTo(start_x+wall_size, start_y);<BR> drawmaze.lineTo(start_x+wall_size, start_y+wall_size);<BR> //drawmaze.moveTo(start_x, start_y);<BR> }<BR>}<BR>drawmaze.lineStyle(0, 0xff0000, 100);<BR>drawmaze.moveTo(10, 10);<BR>drawmaze.lineTo(10+wall_size*dim_x, 10);<BR>drawmaze.lineTo(10+wall_size*dim_x, 10+wall_size*dim_y);<BR>drawmaze.lineTo(10, 10+wall_size*dim_y);<BR>drawmaze.lineTo(10, 10);</P><P>测试吧!</P>页:
[1]