设为首页  加入收藏  联系我们 繁體中文  

黑客软件:

  漏洞扫描 | 木马间谍 | 加密解密 | 远程控制 | 破坏攻击 | 杀毒软件 | 防火墙类 | OICQ专区 | 黑客必备 | 常用工具 | 网吧攻击
文章中心:   最新资讯 | 黑客技术 | 电脑基础 | 菜鸟文摘 | 网络安全 | 网络技巧 | QQ技巧 | OQ空间代码 | 免费资源 | 编程世界 | 建站技术
素材源码:   论坛相关 | ASP源码 | CGI 源码 | NET 源码 | PHP 源码 | 酷站素材 | 字体素材 | 图片素材 | 友情发布 | 网页模版 | 建站软件
教程动画:   黑客教程 | 黑客编程 | 网站入侵 | 菜鸟教程 | 入侵教程 | 破解教程 | 电子书籍 | 网页制作 | 高级会员 | 综合教程 | 本站原创


   

  您当前的位置:中华隐士黑客联盟 -> 电脑基础 -> Flash技术攻略 -> 文章内容 [站内搜索]  

 
Flash MX 编程深层次应用-高级特效(7)
作者:风未起时  来源:中国站长学院  发布时间:2006-11-16 12:27:37  发布人:www.hack86.com
3.3 虚幻特效(7)

    

3.3.3  3D物体的旋转

Flash是一个二维的动画软件,不具有3D的作图功能,但是3D物体才具有现实的真实效果,于是3D动画变得非常迫切。Macromedia公司至今为止还没有为Flash加上3D功能,因而3D的实现只能通过编程或者其他软件生成之后再导入这两种方法了。下面就讲讲在Flash中如何通过3D编程让一个正方形方块产生旋转。如图3-16所示。

3-16

这是个从箭头方向看过去的3D正方形,为了让读者看清这个效果,把颜色设成了透明,很明显远处的面小,近处的面大。请注意每个点都有一个编号,以示区别,下面就是具体程序:

function init() {

    _root.createEmptyMovieClip("pad", 1);

    pad._x = 270;

    pad._y = 200;

}

ya = Math.PI;

fl = 200;

//这里的(x,y,z)代表一个点,这里共有8个点,其排列顺序见前面的图

x = new Array(-100, 100, 100, -100, -100, 100, 100, -100);

y = new Array(-100, -100, 100, 100, -100, -100, 100, 100);

z = new Array(-100, -100, -100, -100, 100, 100, 100, 100);

xp = new Array();

yp = new Array();

function square(x1, y1, x2, y2, x3, y3, x4, y4, col) {

//这个函数是画一个多边形,其填充是用50的透明度

    pad.beginFill(col, 50);

    pad.lineStyle(1, 0, 100);

    pad.moveTo(x1, y1);

    pad.lineTo(x2, y2);

    pad.lineTo(x3, y3);

    pad.lineTo(x4, y4);

    pad.lineTo(x1, y1);

    pad.endFill();

}

_root.onEnterFrame = function() {

    init();

    cosxa = Math.cos(xa);

    sinxa = Math.sin(xa);

    cosya = Math.cos(ya);

    sinya = Math.sin(ya);

    xa += pad._ymouse/1000;

    ya += pad._xmouse/1000;

    for (i=0; i<8; i++) {

      //将原始的坐标通过旋转、透视投影后产生新坐标点

             ypt = cosxa*y[i]-sinxa*z[i];

             zpt = cosxa*z[i]+sinxa*y[i];

             xpt = cosya*x[i]-sinya*zpt;

             zpt = cosya*zpt+sinya*x[i];

             scale = fl/(fl+zpt+200);

             xp[i] = xpt*scale;

             yp[i] = ypt*scale;

    }

    square(xp[0], yp[0], xp[1], yp[1], xp[2], yp[2], xp[3], yp[3], 0xff0000);

    square(xp[0], yp[0], xp[3], yp[3], xp[7], yp[7], xp[4], yp[4], 0x00ff00);

    square(xp[4], yp[4], xp[5], yp[5], xp[6], yp[6], xp[7], yp[7], 0x0000ff);

    square(xp[1], yp[1], xp[2], yp[2], xp[6], yp[6], xp[5], yp[5], 0xff00ff);

    square(xp[0], yp[0], xp[1], yp[1], xp[5], yp[5], xp[4], yp[4], 0xffff00);

    square(xp[2], yp[2], xp[3], yp[3], xp[7], yp[7], xp[6], yp[6], 0x00ffff);

};

_root.onMouseDown = function() {

    _root.draw = true;

};

_root.onMouseUp = function() {

    _root.draw =

}

这段程序中最关键部分就是求xptyptzpt的部分,它是通过一个转换矩阵得出来的公式,由于其变换复杂、深奥难懂,在这里就不作详细的介绍了,有关内容请参考清华大学出版社的《计算机图形学》一书。在这里fl是透视点的距离,也就是当用来透视的距离越远时,看到的就越没有透视效果(可以按远小近大效果来理解)。



[] [返回上一页] [打 印] [收 藏]
  [相关文章评论]    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
 

  QQ空间4个FLASH时钟..
黑色的个性flash时钟..
QQ空间FLASH模块:天..
QQ空间最新FLASH模板..
QQ空间FLASH模块:对..
QQ空间FLASH模块:经..
Flash Player11月出..
QQ空间周杰伦FLASH播..
3.0空间教程系列:使..
QQ空间FLASH模板:4款..


 
中华隐士黑客联盟
本站超级酷的Flash (不看会后悔的..
免费在线看的电影网站(一)
最新QQ空间4.0全屏版效果图!!
免费获得Q币的最新方法
黑客快速入门(强烈推荐)
不用木马,轻松万能偷盗QQ号码
揭秘远程破解盗窃QQ密码的各种方..
免费二级域名申请
18岁少女欲6000元卖处女身 救患血..
 
防止QQ和QQ币游戏币被盗的办法 12-03
养在深闺人未识:FU_Rootkit 12-03
黑客学堂:什么是社会工程学? 12-03
VB程序实现XP效果的界面 12-03
fport.vbs for XP/2003 12-03
保卫自己网站的胜利果实 12-03
SQL注入建立虚拟目录,免得找Web.. 12-03
搜索型注入的文章 12-03
如何用虚拟机安装Windows Vista系.. 12-03
通杀腾讯QCC所有商品免费拿! 12-03
 
关于本站 网站帮助 广告合作 下载声明 友情连接 网站地图 访客留言 论坛登录
〖中华隐士黑客联盟〗,Copyright © 2006-2010 WwW.Hack86.Com 闽ICP备:06023304号
站长:小质 QQ:771760,软件发布MAIL:Hack086@21cn.com