用Vector类作仿3D的flash动画

用Vector类作仿3D的flash动画                          作者:麦长芳 引言 严格来说,这不是一篇教程,这篇文章的旨在目的是向还没有接触过Vector类的闪友介绍、推荐Vector类,利用它的方便,简洁以及它的强大功能作出更加完美的动画,特别是模仿3D的动画,说到Vector类,必须说到一个人——Robert Penner,是他在《Flash Mx编程与创意实现》一书中为它赋予了生命与灵魂(我是这么认为的)(先声明这不是做广告)。这本书在几年前就出版了,应该很多闪友已经看过了,我是在几个月前才知道和看到的(有点井底之蛙,可别取笑我),当我看到其中的Vector类时,眼前确实一亮,我是一名高中物理教师,学过高中物理的闪友都知道矢量在高中物理中的份量,所以我花了大概两天时间,把其中的矢量类部分认真输入电脑几遍,并好好体会了它的实现方法,同时试做了几个常见的动画,等一下我会详细介绍,我会把我输的书本的部分代码贴出来,供共同研究,由于我也是新手,有许多可能是自以为是的地方,希望读者谅解,可别扔东西哦。 正文 读者可以先看第一个例子: [url=http://www.flash8.net/fla/4822.shtml] [color="#003366"]http://www.flash8.net/fla/4822.shtml[/color] [/url] ,怎样,还是比较逼真吧。让我们先看一下它的代码: Vector = function (x, y, z) {         this.x = x;         this.y = y;         this.z = z; }; //构造一个矢量类Vector,它包含3个属性x、y、z Vector.prototype.rotateXYZ = function(a, b, c) {         var sa = Math.sin(a*Math.PI/180), ca = Math.cos(a*Math.PI/180);         var sb = Math.sin(b*Math.PI/180), cb = Math.cos(b*Math.PI/180);         var sc = Math.sin(c*Math.PI/180), cc = Math.cos(c*Math.PI/180);         with (this) {                 //绕x轴                 var ry = y*ca-z*sa;                 var rz = y*sa+z*ca;                 //绕y轴                 var rx = rz*sb+x*cb;                 z = rz*cb-x*sb;                 //绕z轴                 x = rx*cc-ry*sc;                 y = rx*sc+ry*cc;         } }; /*类Vector的方法,该方法是使矢量绕x、y、z轴分别以a、b、c的 角度增量旋转,作3D动画必需的方法,可以参考数学矢量的旋转*/ Vector.prototype.getSee = function(ViewDist) {         if (ViewDist == undefined) {                 ViewDist = 300;         }         return ViewDist/(ViewDist+this.z); }; //获得矢量透视度的方法,返回值是一个随z的增大而减小的值,可参看透视学 Vector.prototype.cast = function(p) {         if (p == undefined) {                 p = this.getSee();         }         with (this) {                 return new constructor(x*p, y*p, 0); 本文转自:http://www.5uflash.com/flashjiaocheng/Flashyingyongkaifa/597.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值