2013-02-13 119 views
1

我会问一个更简单的问题。让我们说,不管如何,但我已经计算出了物体中心和鼠标(角度)之间的一条线的旋转。从北角开始,又一个0,在北边靠近一个CW圈,到359。我问AS3“object.rotation = angle;”每一帧。我有两个文本区域显示值“角度”和“object.rotation”。 180. object.rotation变成-180后回到0.为什么这样呢?AS3对象旋转问题

更简单。我得到A值,然后说A = B。然后让计算机显示A并显示B.在180到360处,B = B-360。

旋转是令人满意的,但数字是错误的。需要解释为什么数字不合适。需要关于如何使对象旋转范围0-360的建议,并直接由我输入的数字确定。 “角度”在我的情况。

这意味着如果我输入旋转2892它应该是(是,8 * 360 + 12),而不是12,而不是-348 ...即使这些代表相同的旋转视觉。

回答

3

我期望这是Flash的溢出保护的结果。试想一下,的转向了一个小时的影片剪辑,每一帧的旋转得到没有这样的剪裁增加了50,它的旋转值将在数百万最终,这将导致的精度和性能(在某些情况下)的损失,如果一个会采取一个10000000 * PI/180的窦。因此,为了防止不期望的或不同的行为,Flash播放器的开发者说得那么实际旋转在区间-180 ... 180返回。

您可能会尝试覆盖旋转setter/getter函数,以保留传递的结果。

class RotationTest extends Sprite { 
    private var myRotation:Number; 
    public override function set rotation(value:Number):void { 
     super.rotation=value; 
     myRotation=value; 
    } 
    public override function get rotation():Number { return myRotation; } 
} 
+0

谢谢。我认为它应该是相同的,但0-> 360-> 0,而不是0-> 180 - >( - 180) - > 0。我试着旋转一个物体旋转,不知何故,它超过了360,并停止了大约32K的功能。现在无论我做什么,我都会得到这个| 180 |最大的事情。总之,增加360旋转没有帮助,但我通过使这是=旋转正值当和=旋转+ 360时负另一个值解决它。尽管我的思绪开始了,但我仍然是绿色的XD – SherWood 2013-02-14 06:12:09

3

它看起来像你坚持下去。从the documentation:

0到180之间的值表示顺时针旋转;从0到 -180的值表示逆时针旋转。此范围之外的值被添加到或从360中减去,以获得 范围内的值。例如,my_video.rotation = 450语句相同 与my_video.rotation = 90

如果你想存储2892,而不是12,你必须手动跟踪它。

当你输入非标准的东西时,它们会为你进行标准化。我会假设这是为了让使用设计器的人更容易,但也许一些图形优化也依赖于它。

+0

是的,谢谢。手动是我必须做的。当发生如此错误的事情时很难看到我的错误,很高兴知道它是什么。 = D – SherWood 2013-02-14 06:17:16