动态调整绝对绘制的Flex 4组件的大小(Catalyst生成的绘图代码)

时间:2010-02-10 11:03:13

标签: flex flex4 flashcatalyst

我有一些Flash Catalyst生成的代码,我需要它可调整大小&可旋转的。

目前,我不知道如何实现这一目标。

基本理念是:

  • 我有 windmill
  • windmill 包含 windmillBlades
  • windmillBlades 旋转。
  • windmill 调整大小。
  • windmill 调整大小时, windmillBlades 应使用 windmill 动态扩展。

下面的代码是我准备的演示应用程序结构的简化大纲,可以粘贴到您的ide中:

http://gist.github.com/300207

请查看    来源,看看你是否可以提供帮助    因为这是关键任务    为了我。 :/

<s:Group id="windmill" width="50" height="200">
    <s:Group id="windmillBlades" resizeMode="scale" verticalCenter="0" horizontalCenter="0">
         <s:Line xFrom="0" xTo="140" yFrom="0" yTo="140">
            <s:stroke>
                <s:SolidColorStroke color="0xBC311E" weight="16" />
            </s:stroke>
        </s:Line>        
    </s:Group>
</s:Group>

谢谢!

编辑:注意这是我的真实应用程序的抽象,我不是在建造一个风车模拟器。

1 个答案:

答案 0 :(得分:1)

这有效:

<s:Group id="windmill" width="50" height="200" x="400" y="400">
    <s:Group id="windmillBlades" resizeMode="scale" width="100%" height="100%">
         <s:Line xFrom="0" xTo="140" yFrom="0" yTo="140">
            <s:stroke>
                <s:SolidColorStroke color="0xBC311E" weight="16" />
            </s:stroke>
        </s:Line>        
    </s:Group>
</s:Group>

<s:VGroup>
    <s:HSlider id="scaler"
        minimum=".1" maximum="2" snapInterval=".01"
        valueCommit="{windmill.scaleX = windmill.scaleY = scaler.value}"/>
    <s:HSlider id="rotator"
        minimum="0" maximum="360" snapInterval="1"
        valueCommit="{windmill.rotation = rotator.value}"/>
</s:VGroup>

我不确定制作一个完整风车的最佳方式(使用s:Line和所有,可能只是一个转发器?),但这是旋转风车的好方法。而不是旋转每一行(大量的计算),只需旋转整个组。如果windmillBladles宽度和高度为100%,它们将自动与群组一起缩放。

如果你想让每个刀片围绕它们的中心单独旋转,那就更难了。幸运的是,ILayoutElement#transformAround方法(UIComponent具有),允许您围绕任意中心旋转/缩放/变换。如果听起来更好,请尝试使用它。

祝你好运, 兰斯