2013-02-22 115 views
2

旋转X和旋转Y有点问题。As3 sprite旋转X和旋转Y

这很酷,如果我只是做了roationX和rotaionY下面

_eventParent.rotationY =_differentX; 
_eventParent.rotationX =_differentY; 

然而,一旦我有指定鼠标移动到_eventParent。 roationX和roationY在鼠标移动时会透视。所以相反,该项目保持相同的大小。它预期增加和减少规模。任何想法为什么这样做?有没有可能阻止这种行为?

谢谢

请找到下面的图像。

enter image description here

+0

发布更多代码,也许会显示问题的swf。 – 2013-02-22 07:01:57

+0

@JonatanHedborg谢谢jonatan我已经上传了一个形象的情况。 – Bruce 2013-02-23 01:24:05

回答

4

透视允许您的形状的一部分看起来比其他部分更接近你。问题在于透视图有一个中心或“消失点”,默认情况下它是固定的。当你将形状从消失点移开时,视角会发生变化,导致你的形状变宽或变窄。

您可以通过更新消失点来解决此问题,使其始终与形状相同。由于形状总是处于消失点,因此角度不应改变。

要做到这一点,为你的形状的PerspectiveProjection:

_eventParent.transform.perspectiveProjection = new PerspectiveProjection(); 

的PerspectiveProjection位于flash.geom包,所以不要忘了将其导入。

然后,每当您更新形状的位置,更新它的消失点:

_eventParent.transform.perspectiveProjection.projectionCenter = 
    new Point(_eventParent.x, _eventParent.y); 

您可能需要通过像素的一组数字,以抵消消失点让找你想要的方式运行的角度。

+0

哇,这听起来像是一个很好的解决方案,我将在下一个星期一进行测试,如果测试结果正确,就会给你打勾。 :)非常感谢! – Bruce 2013-02-23 06:08:39

+0

HI bwroga,_eventParent.transform.perspectiveProjection = new PerspectiveProjection();发生在mouseDown之后? – Bruce 2013-02-25 04:57:28

+1

@ bluebill1049我会在创建_eventParent并首次设置投影中心时设置它。这样就不会有任何奇怪的跳跃。 – bwroga 2013-02-25 05:28:03

0

纠正我,如果我误解你的问题。你的问题是,如果你将旋转应用到movieClip对象,那么为什么尺寸似乎在变化?

为了简化,我们不要在X轴和Y轴上应用旋转。我们来看一个长方形的影片剪辑,然后onMouseMove我们做++myMovieClip.rotationX;

现在,此声明将对该对象应用有关X轴的旋转,并且可以获取影片剪辑在X轴上翻转的透视图,并且此翻转会显示对象大小的变化。

这同样适用于旋转y轴。

+0

嗨abhinav,rotationX和rotationY工作得很好。我的问题是在应用sprite或movieClip的rotationX和rotationY之后。尝试从sprite或movieClip开始。当鼠标移动而不是保持相同的rotationX和rotationY时,您会看到项目倾斜。 – Bruce 2013-02-23 01:15:05