Динамическое изменение размера абсолютно нарисованного компонента Flex 4 (код рисования, сгенерированный Catalyst) - PullRequest
0 голосов
/ 10 февраля 2010

У меня есть некоторый код, сгенерированный Flash Catalyst, и мне нужно, чтобы он был изменяемого размера и с возможностью поворота.

В настоящее время я не знаю, как этого добиться.

Основная идея:

  • У меня есть ветряная мельница .
  • ветряная мельница содержит ветряная мельница * Клинки .
  • Ветряная мельница * Лезвия вращаются.
  • мельница изменения размеров.
  • Когда размер мельницы изменяется, Ветряная мельница должна динамически масштабироваться с мельницей .

Приведенный ниже код представляет собой упрощенную схему структуры демонстрационного приложения, которое я подготовил и которое можно вставить в ваш 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>

Спасибо!

edit: Обратите внимание, что это абстракция моего реального приложения, я не строю симулятор ветряной мельницы.

1 Ответ

1 голос
/ 10 февраля 2010

Это работает:

<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), который позволяет вращать / масштабировать / преобразовывать вокруг произвольного центра. Попробуйте использовать это, если это звучит лучше.

Удачи, Lance

...