0

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

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

基本思想是:

  • 我有一个风车
  • windmill包含windmillBlades
  • 风车叶片旋转。
  • 风车调整大小。
  • 风车调整大小时,风车叶片应随风车动态缩放。

下面的代码是我准备的演示应用程序结构的简化大纲,准备粘贴到您的 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>

谢谢!

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

4

1 回答 1

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%,它们将自动随 Group 缩放。

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

祝你好运,兰斯

于 2010-02-10T12:46:46.870 回答