⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash_3d教程——闪吧 flash8.htm

📁 3D教程,简明地介绍了如何在flash中实现3维坐标转化成屏幕坐标,也讲述了如何旋转3D物体.内附了几个3D源文件.
💻 HTM
📖 第 1 页 / 共 5 页
字号:
            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&lt;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 + -