Flex 4: Могу ли я анимировать несколько объектов в одной параллели?

У меня есть несколько вращающихся шаров, которые я хочу полностью оживить. Вот что у меня есть до сих пор, но когда я играю в параллель (spinning.play()), ничего не происходит.

Где я ошибаюсь?

<fx:Declarations>                       
    <fx:Vector id="kfP1" type="spark.effects.animation.MotionPath">
        <s:MotionPath property="baseColor">
            <s:interpolator>
                <s:HSBInterpolator />
            </s:interpolator>
            <s:Keyframe time="0" value="0x9F9B9B" />
            <s:Keyframe time="250" value="0xFFFFFF" />
            <s:Keyframe time="500" value="0x9F9B9B" />
        </s:MotionPath>         
    </fx:Vector>
    <fx:Vector id="kfP2" type="spark.effects.animation.MotionPath">
        <s:MotionPath property="baseColor">
            <s:interpolator>
                <s:HSBInterpolator />
            </s:interpolator>
            <s:Keyframe time="125" value="0x9F9B9B" />
            <s:Keyframe time="375" value="0xFFFFFF" />
            <s:Keyframe time="625" value="0x9F9B9B" />
        </s:MotionPath>         
    </fx:Vector>
    <fx:Vector id="kfP3" type="spark.effects.animation.MotionPath">
        <s:MotionPath property="baseColor">
            <s:interpolator>
                <s:HSBInterpolator />
            </s:interpolator>
            <s:Keyframe time="250" value="0x9F9B9B" />
            <s:Keyframe time="500" value="0xFFFFFF" />
            <s:Keyframe time="750" value="0x9F9B9B" />
        </s:MotionPath>         
    </fx:Vector>
    <fx:Vector id="kfP4" type="spark.effects.animation.MotionPath">
        <s:MotionPath property="baseColor">
            <s:interpolator>
                <s:HSBInterpolator />
            </s:interpolator>
            <s:Keyframe time="375" value="0x9F9B9B" />
            <s:Keyframe time="625" value="0xFFFFFF" />
            <s:Keyframe time="875" value="0x9F9B9B" />
        </s:MotionPath>         
    </fx:Vector>
    <fx:Vector id="kfP5" type="spark.effects.animation.MotionPath">
        <s:MotionPath property="baseColor">
            <s:interpolator>
                <s:HSBInterpolator />
            </s:interpolator>
            <s:Keyframe time="500" value="0x9F9B9B" />
            <s:Keyframe time="750" value="0xFFFFFF" />
            <s:Keyframe time="1000" value="0x9F9B9B" />
        </s:MotionPath>         
    </fx:Vector>
    <fx:Vector id="kfP6" type="spark.effects.animation.MotionPath">
        <s:MotionPath property="baseColor">
            <s:interpolator>
                <s:HSBInterpolator />
            </s:interpolator>
            <s:Keyframe time="625" value="0x9F9B9B" />
            <s:Keyframe time="875" value="0xFFFFFF" />
            <s:Keyframe time="1125" value="0x9F9B9B" />
        </s:MotionPath>         
    </fx:Vector>
    <fx:Vector id="kfP7" type="spark.effects.animation.MotionPath">
        <s:MotionPath property="baseColor">
            <s:interpolator>
                <s:HSBInterpolator />
            </s:interpolator>
            <s:Keyframe time="125" value="0x9E9A9A" />
            <s:Keyframe time="750" value="0x9F9B9B" />
            <s:Keyframe time="1000" value="0xFFFFFF" />
            <s:Keyframe time="1125" value="0xCECCCC" />
        </s:MotionPath>         
    </fx:Vector>
    <fx:Vector id="kfP8" type="spark.effects.animation.MotionPath">
        <s:MotionPath property="baseColor">
            <s:interpolator>
                <s:HSBInterpolator />
            </s:interpolator>
            <s:Keyframe time="0" value="0xFFFFFF" />
            <s:Keyframe time="125" value="0x9E9A9A" />
            <s:Keyframe time="875" value="0x9F9B9B" />
            <s:Keyframe time="1125" value="0xFFFBFB" />
        </s:MotionPath>         
    </fx:Vector>

    <s:Parallel id="spinning" repeatCount="0" duration="1125"  >
        <s:Animate id="animateP1" motionPaths="{kfP1}" target="{p1}"/>
        <s:Animate id="animateP2" motionPaths="{kfP2}" target="{p2}"/>
        <s:Animate id="animateP3" motionPaths="{kfP3}" target="{p3}"/>
        <s:Animate id="animateP4" motionPaths="{kfP4}" target="{p4}"/>
        <s:Animate id="animateP5" motionPaths="{kfP5}" target="{p5}"/>
        <s:Animate id="animateP6" motionPaths="{kfP6}" target="{p6}"/>
        <s:Animate id="animateP7" motionPaths="{kfP7}" target="{p7}"/>
        <s:Animate id="animateP8" motionPaths="{kfP8}" target="{p8}"/>
    </s:Parallel>
</fx:Declarations>

person Amy    schedule 20.07.2010    source источник


Ответы (1)


Глядя на формат Parallel, который производит Catalyst (который работает), похоже, вам нужно сделать что-то вроде этого (не отмечен)

<s:Parallel>
    <s:Parallel target = "{p1}">
        <s:Animate id="animateP1" motionPaths="{kfP1}"/>
   </s:Parallel>
    <s:Parallel target = "{p2}">
        <s:Animate id="animateP2" motionPaths="{kfP2}"/>
    </s:Parallel>
</s:Parallel>

Мне это кажется странным, но это то, что производит инструмент!

person Gregor Kiddie    schedule 21.07.2010
comment
Я использовал ваше решение, но также понял, что, поскольку я использовал пути и заливки, мне нужно было переместить идентификаторы {p1} в сплошную заливку, а не путь. Как только я сделал это и изменил свойство, чтобы покрасить, оно сработало. Спасибо! - person Amy; 22.07.2010