0

Flash Catalyst によって生成されたコードがあり、サイズ変更可能で回転可能にする必要があります。

現時点では、これを実現する方法がわかりません。

基本的な考え方は次のとおりです。

  • 私は風車を持っています。
  • windmillにはwindmillBladesが含まれています。
  • 風車の羽根が回転します。
  • 風車のサイズが変更されます。
  • 風車のサイズが変更されると、windmillBladeswindmillに合わせて動的にスケーリングする必要があります。

以下のコードは、私が用意したデモ アプリの構造を簡略化したもので、すぐに 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 とすべて、おそらく単なるリピーター?) を作成する最善の方法はわかりませんが、これは風車を回転させるための良い方法です。すべての行を回転させる (大量の計算) 代わりに、グループ全体を回転させます。幅と高さが 100% の場合windmillBladles、グループに合わせて自動的にスケーリングされます。

ブレードをそれぞれ個別に中心を中心に回転させたい場合、それは非常に困難です。幸いなことILayoutElement#transformAroundに、任意の中心を中心に回転/スケーリング/変換できるメソッド (UIComponent が持っている) があります。その方が良さそうな場合は、それを使用してみてください。

がんばれ、ランス

于 2010-02-10T12:46:46.870 に答える