?? flash_3d教程——閃吧 flash8.htm
字號:
face="Times New Roman" size=3></FONT>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD>
<DIV>
<DIV><FONT face="Times New Roman">o</FONT></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV></DIV></TD></TR></TBODY></TABLE><FONT
face="Times New Roman" size=3></FONT>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD>
<DIV>
<DIV><FONT face="Times New Roman">y</FONT></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV></DIV></TD></TR></TBODY></TABLE><FONT
face=宋體> <B>x=Stage.width/2;</B> // Stage.width是場景的寬;</FONT></P>
<DIV></DIV>
<P>
<DIV> <B>y=Stage.height/2;</B> // Stage.height是場景的高;</DIV>
<DIV></DIV>
<P>
<DIV>這樣就把原坐標的原點移動了,場景的中心點,不過,Y軸還是向下,為正的。(這在后面做旋轉時要注意的。)</DIV>
<DIV></DIV>
<P>
<DIV><A id=ImgSpan
href="FLASH_3D教程——閃吧 Flash8.files/20058613241439.jpg"
target=_blank><IMG alt=按此在新窗口瀏覽圖片
src="FLASH_3D教程——閃吧 Flash8.files/20058613241439.jpg"
onload="if(this.width>screen.width-333)this.width=screen.width-333"
border=0></A></DIV>
<DIV></DIV>
<P>
<DIV>(<FONT face=宋體>2)、角度的轉換</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT
face=宋體>flash中Math函數里的參數都要用到弧度,所以角度與弧度之間的轉換是需要知道的。</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體>在flash as中,我們可以通過這樣的表達式來進行轉換:</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體><B>hudu=jiaodu*Math.PI/180;</B> /
/把角度轉換為弧度,公式為:弧度=角度 *3.14/180,3.14為pai</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體><B>jiaodu=hudu*180/Math.PI; </B>/
/把弧度轉換為角度,公式為:角度=弧度*180/3.14,3.14為pai</FONT></DIV>
<DIV></DIV>
<P>
<DIV>(<B>if (jiaodu<0) { jiaodu = jiaodu+360; }</B>/*
轉換后的角度的范圍從-180到180, 數學中的角度從0到360,所以小于0時加上360 */)</DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體>2、flash中的三維坐標系</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT
face=宋體> 如圖3,z軸表示一個物體離屏幕的遠近,當物體的z軸位置增加時,物體朝遠離屏幕的方向運動,當物體的z值減小時,物體朝接近屏幕的方向運動。</FONT></DIV>
<DIV></DIV>
<P>
<DIV align=center>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD><A id=ImgSpan
href="FLASH_3D教程——閃吧 Flash8.files/20058613276247.jpg"
target=_blank><IMG alt=按此在新窗口瀏覽圖片
src="FLASH_3D教程——閃吧 Flash8.files/20058613276247.jpg"
onload="if(this.width>screen.width-333)this.width=screen.width-333"
border=0></A>
<DIV></DIV>
<DIV></DIV>
<P>
<DIV align=center>圖3:三維坐標系</DIV>
<DIV><BR><A id=ImgSpan
href="FLASH_3D教程——閃吧 Flash8.files/200586132713575.jpg"
target=_blank><IMG alt=按此在新窗口瀏覽圖片
src="FLASH_3D教程——閃吧 Flash8.files/200586132713575.jpg"
onload="if(this.width>screen.width-333)this.width=screen.width-333"
border=0></A></DIV>
<DIV></DIV>
<P>
<DIV align=center>圖4:二維與三維的點的關系</DIV>
<DIV><BR></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV></TD>
<TD>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV></TD></TR>
<TR>
<TD>
<DIV align=center></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV></TD>
<TD>
<DIV align=center></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV></TD></TR></TBODY></TABLE></DIV>
<DIV><FONT face=宋體>3、三維坐標轉換成二維坐標</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT
face=宋體> 如圖4,已知一個點(x,y,z),利用三角形相似的原理,可以得出下列結論:</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT
face=宋體> d/(d+z)=y1/y,推出:y1=d*y/(d+z),可在二維平面上來表現空間上的點的位置。進一步把它簡化。提出因子d/(d+z),用ratio(比率)表示,這個公式就變為</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體> ratio=d/(d+z);</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體> y1=ratio*y;同理可推出</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體> x1=ratio*x;</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體>二、控制物體的屬性(大小,層次,透明度等)</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體> 1、控制mc的大小</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體>在三維坐標中,當z值增大,也就是遠離屏幕時,物體應越小,反之越大。</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT
face=宋體>我們可以用上滿的ratio,當z增加時,ratio減少,因為在ratio中,z是作為分母的。反之,當z減少時,ratio增加。所以可用ratio來控制mc的大小。如下:</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體> mc1._xscale=mc._xscale*ratio;</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體>mc1._yscale=mc._yscale*ratio;</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體> 2、控制mc的層次</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體>z值最大,物體應在最底層,最小,在最上層,</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT
face=宋體>所以mc的層次可以有z組成,可以用很大的數減z,也可以讓z除以負數,等等,<B>這里方法比較靈活,也是做”三維”效果的關鍵</B>,<B>主要要在調試中確定適合設計的方法</B>。flash中,設置mc的層次用swapDepths,如下:</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體>mc.swapDepths(1000-z);//設置mc的層次</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體>mc.swapDepths(z/-4);</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體>3、控制mc的透明度</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT
face=宋體> 遠處的物體看上去模糊些,近處的物體清晰些,在flash中,可用_alpha來控制,方法和控制大小類似,不在介紹原理。如下:</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體> mc._alpha=100*ratio;</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體>4、控制mc的角度(旋轉)</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT
face=宋體> 這一步最難,也最好的東東<B>。</B>學習以后,你將能制作出非常cool的效果</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT
face=宋體> 旋轉有三種,x旋轉:坐標x不變,y旋轉:y不變,z旋轉:z不變,我們先來推導z旋轉。</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT
face=宋體> 如下圖:從點(x,y,0)轉到(x1.y1.0),求點(x1.y1.0)</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體><A id=ImgSpan
href="FLASH_3D教程——閃吧 Flash8.files/200586132720286.jpg"
target=_blank><IMG alt=按此在新窗口瀏覽圖片
src="FLASH_3D教程——閃吧 Flash8.files/200586132720286.jpg"
onload="if(this.width>screen.width-333)this.width=screen.width-333"
border=0></A></FONT></DIV>
<DIV></DIV>
<P>
<DIV align=center></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體>利用數學中的正弦、余弦公式得出</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT
face=宋體> x1=r*cos(a+b),而cos(a+b)=sina*cosb+cosa*sinb</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體> 推出:x1=r(cosa*cosb-sina*sinb)</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體> 又因為x=r*cosa,y=r*sina</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體> 所以x1=x*cosb-y*sinb</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT face=宋體> 同樣推出:y1=y*cosb+x*sinb</FONT></DIV>
<DIV></DIV>
<P>
<DIV><FONT
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -