【问题标题】:Object does not rotate around pivot point对象不围绕枢轴点旋转
【发布时间】:2014-01-11 20:50:22
【问题描述】:

我有一个看起来像这样的对象:

当我尝试使用 [INSTANCENAME].rotation += 10; 旋转它时 它仍然围绕对象的中间旋转。我是不是做错了什么?

【问题讨论】:

    标签: actionscript-3 flash actionscript air adobe


    【解决方案1】:

    我做了一些研究,显然没有直接的方法来以编程方式更改枢轴点,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;
    }
    

    希望能解决你的问题!

    【讨论】:

    • 嗯。对象的轴心点是该对象内具有 (0,0) 坐标的点,它与注册点相同。当我对一个对象应用旋转时,它会围绕自身的 (0,0) 旋转。这在 Flash CS6 中是否已更改?虽然是的,但如果您希望一个对象围绕另一个点旋转,请将其包裹在容器精灵中并调整其 x&y 以匹配所需的枢轴点,然后不是旋转对象而是旋转其容器。
    • 不,注册点是考虑的对象上的点 (0,0)。枢轴点是发生旋转的地方。它们可以相同(有时默认情况下),但它们不是相同的属性。如果你弄乱了reg。点,您将放弃所有内部坐标,并使定位更加困难。如果您只是更改枢轴点(在 IDE 中或通过上述方法),则可以避免该问题。自从我开始使用 CS5.5 以来就是这样,并且根据文档可能更长。
    【解决方案2】:

    一个非常简单的方法就是这样做。

    1. 将图像转换为符号(影片剪辑)。 [你可能已经这样做了]。
    2. 双击MovieClip/Sprite进入里面。
    3. 移动图像,使注册点与枢轴对齐。

    注意:仅适用于 FLASH IDE。

    【讨论】:

    • 你能详细说明第三点吗? NB是什么意思?
    • @user2789610 :双击 MovieClip 进入其中。现在移动图像(在您的情况下为上图),使手柄与中心点对齐(我不确定它是否显示中心点)。检查这个以获得我提到的想法Editing registration point & NB 的意思是:提请注意一些特别重要的事情:)
    猜你喜欢
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 2019-12-10
    相关资源
    最近更新 更多