在flex中旋转绘制的矩形

时间:2010-05-18 12:35:16

标签: flex

我编写了以下用于绘制旋转矩形的代码

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)。我该如何解决这个问题?

提前致谢。

1 个答案:

答案 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,但这导致没有轮换发生。显然,如果你想看到效果在行动,你可以通过使用任何值(以毫秒为单位)来增加这段时间。