网站首页  |   艺术资讯  |  拍卖展览  |  美术高考   |  设计广告  |  美术文粹  |  视觉创意   |   鉴藏投资  |   艺友录

艺术爱好者论坛's Archiver

无海 发表于 2007-12-10 16:17

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++)>&nbsp;maze[x] = new Array(0, 1, 1, 1);<BR>&nbsp;// 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>&nbsp;// check for possible moves<BR>&nbsp;possible = "";<BR>&nbsp;if ((Math.floor(pos/dim_x) == Math.floor((pos-1)/dim_x)) and (maze[pos-1][0] == 0)) {<BR>&nbsp;&nbsp;possible = possible+"W";<BR>&nbsp;}<BR>&nbsp;if ((Math.floor(pos/dim_x) == Math.floor((pos+1)/dim_x)) and (maze[pos+1][0] == 0)) {<BR>&nbsp;&nbsp;possible = possible+"E";<BR>&nbsp;}<BR>&nbsp;if (((pos+dim_x)<CELL_COUNT) {<BR 0)) (maze[pos+dim_x][0]="=" and>&nbsp;&nbsp;possible = possible+"S";<BR>&nbsp;}<BR>&nbsp;if (((pos-dim_x)&gt;=0) and (maze[pos-dim_x][0] == 0)) {<BR>&nbsp;&nbsp;possible = possible+"N";<BR>&nbsp;}<BR>&nbsp;// if a move exists, crash a wall and mark new cell as visited&nbsp;&nbsp;&nbsp; <BR>&nbsp;if (possible) {<BR>&nbsp;&nbsp;visited++;<BR>&nbsp;&nbsp;mymoves.push(pos);<BR>&nbsp;&nbsp;way = possible.charAt(Math.round(Math.random()*(possible.length-1)));<BR>&nbsp;&nbsp;switch (way) {<BR>&nbsp;&nbsp;case "N" :<BR>&nbsp;&nbsp;&nbsp;maze[pos][1] = 0;<BR>&nbsp;&nbsp;&nbsp;maze[pos-dim_x][2] = 0;<BR>&nbsp;&nbsp;&nbsp;pos -= dim_x;<BR>&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;case "S" :<BR>&nbsp;&nbsp;&nbsp;maze[pos][2] = 0;<BR>&nbsp;&nbsp;&nbsp;maze[pos+dim_x][1] = 0;<BR>&nbsp;&nbsp;&nbsp;pos += dim_x;<BR>&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;case "E" :<BR>&nbsp;&nbsp;&nbsp;maze[pos][3] = 0;<BR>&nbsp;&nbsp;&nbsp;maze[pos+1][4] = 0;<BR>&nbsp;&nbsp;&nbsp;pos++;<BR>&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;case "W" :<BR>&nbsp;&nbsp;&nbsp;maze[pos][4] = 0;<BR>&nbsp;&nbsp;&nbsp;maze[pos-1][3] = 0;<BR>&nbsp;&nbsp;&nbsp;pos--;<BR>&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;maze[pos][0] = 1;<BR>&nbsp;&nbsp;// else backtrack to previous visited cell<BR>&nbsp;} else {<BR>&nbsp;&nbsp;pos = mymoves.pop();<BR>&nbsp;}<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++)>&nbsp;start_x += wall_size;<BR>&nbsp;if ((x%dim_x) == 0) {<BR>&nbsp;&nbsp;start_y += wall_size;<BR>&nbsp;&nbsp;start_x = 10;<BR>&nbsp;}<BR>&nbsp;if (maze[x][2] == 1) {<BR>&nbsp;&nbsp;// south<BR>&nbsp;&nbsp;drawmaze.moveTo(start_x, start_y+wall_size);<BR>&nbsp;&nbsp;drawmaze.lineTo(start_x+wall_size, start_y+wall_size);<BR>&nbsp;&nbsp;//drawmaze.moveTo(start_x, start_y);<BR>&nbsp;}<BR>&nbsp;if (maze[x][3] == 1) {<BR>&nbsp;&nbsp;// east<BR>&nbsp;&nbsp;drawmaze.moveTo(start_x+wall_size, start_y);<BR>&nbsp;&nbsp;drawmaze.lineTo(start_x+wall_size, start_y+wall_size);<BR>&nbsp;&nbsp;//drawmaze.moveTo(start_x, start_y);<BR>&nbsp;}<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]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.