用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
用Vector类作仿3D的flash动画
最新推荐文章于 2022-02-25 18:19:43 发布