我试图使用AS3将精灵补间到新的3D坐标(x,y,z),我想使用TweenLite来做,但我不知道怎么做?
我不是一个非常有经验的程序员,我只是开始解决flash 10的三维可能性,而Tweenlite对于我的动画到目前为止一直非常有用。
我一直试图像这样使用QuaternionsPlugin:
TweenLite.to(myMc, 2, {quaternions:{orientation:new Quaternion(x, y, z, w)}});
有x,y,z属性,但我无法弄清楚w代表什么。 我尝试了下面的Sprite类的例子,但是当我编译它时,它说:1180:调用一个可能未定义的方法Quaternion。
package com{
import flash.display.*;
import flash.events.*;
import com.greensock.TweenLite;
import com.greensock.plugins.TweenPlugin;
import com.greensock.plugins.QuaternionsPlugin;
TweenPlugin.activate([QuaternionsPlugin]); //activation is permanent in the SWF, so this line only needs to be run once.
public class Carousel extends Sprite {
public function Carousel():void {
}
public function scrollUp():void{
TweenLite.to(Mc1, 2, {quaternions:{orientation:new Quaternion(246, 244, 0, 400)}});
TweenLite.to(Mc2, 2, {quaternions:{orientation:new Quaternion(242, 210, 70, 353)}});
}
public function scrollDown():void{
TweenLite.to(Mc1, 2, {quaternions:{orientation:new Quaternion(242, 290, 60, 360)}});
TweenLite.to(Mc2, 2, {quaternions:{orientation:new Quaternion(246, 244, 0, 400)}});
}
}
}
非常感谢任何提示/帮助!
答案 0 :(得分:0)
Vector3D个对象具有w属性。 Matrix3D的 interpolate() 方法使用四元数,因此您可以使用Matrix3D的intropolate()或transformVector()方法进行补间,或者您可以简单地补间x,y和z属性您的显示对象 - 假设您不需要绝对最有效的渲染。