On Thu, Nov 18, 2010 at 9:44 PM, Jason H <scorp...@yahoo.com> wrote:
> The  following does not work. However is I replace the animationSet function
> with individual lines of {animation}.running = {value} then it works.
> Also please the comment points out an annoyance.
>
> Can anyone tell me if I am wong, or if QML is wrong.
> Qt 4.7.0
>
> function animationSet(animations,value)
>    {
>        for (var animation in [textAnimation, eyeAnimation, eyeOutline,
> pulseAnimation])
>        {
>            if (value == false && animation.running == true)
>                // animations, when running== false and re-set to false
>            {   // will emit Completed !?!1
>                animation.running =  false;
>            } else {
>                animation.running = true;
>            }
>        }
>    }
>    function start() {
>        stop();
>        root.visible=true;
>        animationSet([textAnimation, eyeAnimation, eyeOutline, pulseAnimation,
> mainAnimation], true);
>        console.log("start called for "+ name);
>    }
>

Hi,

Using for-in statement, you will get the index of the object, not the
object itself.

Also, instead of iterating over the items using javascript, it's
better use property bindings to improve performance. Just remove
animationSet method and bind the "running" properties to a root
property, like this:

Item {
    id: root
    property bool active : false

    NumberAnimation { id: textAnimation; running: root.active; ... }
    NumberAnimation { id: eyeAnimation; running: root.active; ... }

    // ...

    function start() {
        stop();
        root.visible = true;
        root.active = true;
    }
}

Br,
Adriano

_______________________________________________
Qt-qml mailing list
Qt-qml@trolltech.com
http://lists.trolltech.com/mailman/listinfo/qt-qml

Reply via email to