【发布时间】:2014-01-11 20:50:22
【问题描述】:
我有一个看起来像这样的对象:
当我尝试使用 [INSTANCENAME].rotation += 10; 旋转它时
它仍然围绕对象的中间旋转。我是不是做错了什么?
【问题讨论】:
标签: actionscript-3 flash actionscript air adobe
我有一个看起来像这样的对象:
当我尝试使用 [INSTANCENAME].rotation += 10; 旋转它时
它仍然围绕对象的中间旋转。我是不是做错了什么?
【问题讨论】:
标签: actionscript-3 flash actionscript air adobe
我做了一些研究,显然没有直接的方法来以编程方式更改枢轴点,AFAIK。相当奇怪,因为您可以在 Flash Pro IDE 中更改它。 (对于那些阅读,枢轴点与注册点不同。)
[编辑:多想一下,我认为枢轴点实际上并不“存在”,至少在可编程属性的上下文中是这样。它只存在于 Flash IDE 中某些工具的上下文中。]
您需要将您的对象单独放置在另一个对象中,以便内部对象的所需枢轴点位于外部对象的中心之上。然后,旋转外部对象。
您可以稍后通过更改内部对象的位置来控制对象的“枢轴点”。
由于外部对象的中心根据其大小移动,而内部对象的位置决定了外部对象的大小,因此您需要应用一些数学运算。内部对象的 x 位置需要等于从内部对象上所需的枢轴点到该内部对象最右侧边缘的距离。同样的概念也适用于 y 位置。
这可以直接在 IDE 中完成,也可以通过代码完成,无论您选择哪种方式。
动态更改的代码示例。此函数位于外部对象内部。 (如果需要,您可以从事件侦听器中获取 pivotX 和 pivotY。)[抱歉,代码未经测试。]
function newPivot(int pivotX, int pivotY):void
{
inner.x = inner.width - pivotX;
inner.y = inner.height - pivotY;
}
希望能解决你的问题!
【讨论】:
一个非常简单的方法就是这样做。
注意:仅适用于 FLASH IDE。
【讨论】: