Flex 4 Move Effect только анимация последней цели в массиве из нескольких предметов - PullRequest
0 голосов
/ 06 февраля 2011

Я анимирую несколько предметов, используя эффект Move. Я добавляю каждый элемент в массив после того, как он был добавлен в список отображения, и как только все элементы добавляются, вызывая метод play, передавая ему массив элементов.

В моей анимации воспроизводится только последний элемент.

Вот мой код:

MXML: s: Move id = "coinFall" yFrom = "- 400" duration = "2000" />

public function showCoins(n:Number):void{
            holder.removeAllElements();
            var targets:Array = [];
            if (n>=2.5){
                var coins:uint = Math.round(n/2.5);
                for (var i:uint = 0; i<coins; i++){

                    var c:Coin = new Coin();
                    c.y = 0 - (i*15);
                    holder.addElement(c);
                    targets.push(c);
                }
                coinFall.play(targets); 
            }
        }

Любая помощь высоко ценится. Спасибо

1 Ответ

0 голосов
/ 06 февраля 2011

Трудно сказать без более полного кода, но этот пример работает для меня:

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

    <fx:Declarations>
        <s:Move id="coinFall" yBy="100" duration="2000" />
        <fx:Component className="Coin">
            <s:Ellipse width="50" height="50">
                <s:fill>
                    <s:SolidColor color="red" />
                </s:fill>
            </s:Ellipse>
        </fx:Component>
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            public function showCoins(n:Number):void{
                holder.removeAllElements();
                var targets:Array = [];
                for (var i:uint = 0; i<n; i++){
                    var c:Coin = new Coin();
                    c.x = i*50;
                    c.y = 0 - i*10;
                    holder.addElement(c);
                    targets.push(c);
                }
                coinFall.play(targets); 
            }
        ]]>
    </fx:Script>

    <s:controlBarContent>
        <s:Button label="play" click="showCoins(5)" />
    </s:controlBarContent>

    <s:Group id="holder" />

</s:Application>

Я бы посоветовал использовать yBy / yTo для эффекта Move.

...