我编写了以下用于绘制旋转矩形的代码
var s:UIComponent = new UIComponent();
s.graphics.lineStyle(1, 0x0000FF);
s.graphics.drawRect(50, 50, 200, 200);
s.rotation = 30;
template.addChild(s);
其中template
是画布。它的旋转很好,但问题是位置不正确。即旋转后不在(50,50)。我该如何解决这个问题?
提前致谢。
答案 0 :(得分:1)
你所看到的是Flex中原点的默认旋转(在你的情况下,X,Y坐标为50,50)我假设你想围绕中心旋转(我最近不得不这样做) 。通过基于旋转角度调整原点,有陪审团的方法来做到这一点。然后是旋转效果:
import mx.effects.Rotate;
var s:UIComponent = new UIComponent();
var rotator:Rotate = new Rotate(s);
s.graphics.lineStyle(1, 0x0000FF);
s.graphics.drawRect(50, 50, 200, 200);
rotator.angleFrom = 0;
rotator.angleTo = 30;
rotator.originX = s.width/2;
rotator.originY = s.height/2;
template.addChild(s);
rotator.play();
现在我注意到了一些问题,需要我在play()方法之后再次设置旋转对象的宽度和高度,但除此之外我得到了理想的旋转情况。
另一个缺点是它是一种效果,这意味着它可视地旋转对象。如果您不想看到对象旋转,我会在回复时回发。
答案是持续时间
只需在播放前添加rotator.duration = 1
,它就会很快发生,用户将无法看到它。 1为1毫秒。我试过0,但这导致没有轮换发生。显然,如果你想看到效果在行动,你可以通过使用任何值(以毫秒为单位)来增加这段时间。