使用ActionScript3旋转精灵
答
一旦你知道,把从Flex中AS3,反之亦然是非常简单的。翻译的Flex代码看起来像在ActionScript如下:
Flex是AS3。 Flex编译到actionscript。通常,这只是一种声明(而不是必要)的方式来完成任务。
这样例子的肉中的代码片段:
private function playEffect(target:Animate, angle:Number):void {
if (!target.isPlaying) {
rotY += angle;
target.play();
}
}
//snip...
<fx:Declarations>
<fx:Number id="rotY">0</fx:Number>
<s:Rotate3D id="fxRotate3DNeg" target="{image}" angleYTo="{rotY}"
autoCenterTransform="true" />
<s:Rotate3D id="fxRotate3DPos" target="{image}" angleYTo="{rotY}"
autoCenterTransform="true" />
</fx:Declarations>
什么做的工作是与两个“ROTATE3D”对象一起在“动画”对象。所以为了让这个工作在纯粹的AS3中,唯一需要的难题就是链接到flex库。根据你的IDE,这很容易做到。
从那里你所要做的就是创建你想要的对象,强制性地而不是声明性地。因此,而不是做这样的事情:
<fx:Number id="rotY">0</fx:Number>
你需要做的:
var rotY:Number = 0;
一旦你知道,把从Flex中AS3,反之亦然是非常简单的。翻译的Flex代码看起来像在ActionScript如下:
import spark.effects.Rotate3D;
var rotY:Number;
var fxRotate3DNeg:Rotate3D;
var fxRotate3DPos:Rotate3D;
rotY = 0;
fxRotate3DNeg = new Rotate3D(image);; //the constructor sets the "target" property
fxRotate3DNeg.angleYTo = rotY;
fxRotate3DNeg.autoCenterTransform = true;
fxRotate3DPos = new Rotate3D(image);
fxRotate3DPos.angleYTo = rotY;
fxRotate3DPos.autoCenterTransform = true;
现在,这把我的头顶部,在这个文本编辑器在the Rotate3D API和打字一眼,所以我敢肯定,它不是完美的,但它应该给你一个关于如何前进的清晰思路。如果您需要更多帮助,请告诉我,我可以翻译更多示例。
我希望帮助,
--gMale
编辑: 正如我在看代码,一个棘手的其他点是,angleYTo属性绑定到ROTY。所以为了真正做到这一点,你必须在playEffect函数中明确地设置这些属性。如在:
private function playEffect(target:Animate, angle:Number):void {
if (!target.isPlaying) {
rotY += angle;
//manually set properties
fxRotate3DNeg.angleYTo = fxRotate3DPos.angleYTo = rotY;
target.play();
}
}
或者,你可以imperatively create the data binding,这很容易做到。然后,playEffect函数将不需要修改。
答
它就像您通常那样旋转物体。但是,在3D空间中,您将不得不使用: sprite.rotationY
请确保您正在为Flash 10或更高版本导出,因为3d功能在早期版本中不存在。