从底部弯曲旋转椭圆而不是中间

时间:2011-06-18 16:59:32

标签: flex actionscript ellipse rotation

另外有一点关于flex的小问题...... 我做了一个椭圆,我想动态旋转它。 做了一个h:滑块,它改变了椭圆的rotate =“”值。 它旋转很好。但旋转点位于椭圆的中间。

我希望它在底部(y)和中间(x)。

椭圆有一些transformY和transformX参数,但它们没有效果吗?

我的功能

private function rotateRadius():void {
if(wind.selected) {

selected.radiusDisp.rotation = radiusRotate.value;
}else {

}

}

如果有人能给我一个提示,

会很棒

2 个答案:

答案 0 :(得分:1)

这是改变物体旋转方式的最简单方法。

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
           xmlns:s="library://ns.adobe.com/flex/spark">

<s:controlBarContent>
    <s:HSlider id="rotationSlider" minimum="0" maximum="360" />
</s:controlBarContent>


<s:Ellipse rotation="{rotationSlider.value}" transformX="100" transformY="50" width="200" height="100" x="100" y="100">
    <s:fill>
        <s:SolidColor color="red" />
    </s:fill>
</s:Ellipse>


<s:Ellipse rotation="{rotationSlider.value}" transformX="100" transformY="100" width="200" height="100" x="400" y="100">
    <s:fill>
        <s:SolidColor color="red" />
    </s:fill>
</s:Ellipse>

如果您希望椭圆在曲面上摇摆/滚动,则需要在计算注册点时添加一点三角函数。

HTH, FTQuest

答案 1 :(得分:0)

有几种方法可以做到这一点,最简单的方法是将椭圆嵌套在另一个显示对象中(这样你想要旋转的点位于新显示对象的中心)。这可能是柔性布局的痛苦,但是现在你有一个比那里的椭圆更“大”的物体。

另一个选项(正确的方法)是使用变换对象,参见

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObject.html#transform

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/geom/Transform.html#matrix