Russian Qt Forum

Qt => Qt Quick => Тема начата: OKTA от Октябрь 02, 2012, 09:54



Название: [РЕШЕНО] onCLicked + PropertyAnimation
Отправлено: OKTA от Октябрь 02, 2012, 09:54
Товарищи! Доброго дня Вам!
ПОдскажите, хочу в один onClicked в MouseArea впихнуть PropertyAnimation и изменение property родителя, а собака ругается! Что не так? А точнее, как такое лучше обойти?)) Код примерно такой:

Код:
Item {
    id: rectangle1
    property bool locked: false
  

    Image {
        id: name

        source: "../content/pics/lockBody.png"

        MouseArea{
            anchors.fill: parent
            onClicked: {
                //

                PropertyAnimation {
                         target: name;
                         property: "rotation";
                         from: 0;
                         to: 45;
                         duration: 300;
                         easing.type: Easing.Linear
                }

                locked = !locked
            }

        }
    }  
    
}


Название: Re: onCLicked + PropertyAnimation
Отправлено: mutineer от Октябрь 02, 2012, 10:04
Не так сама идея. onClicked - это джаваскрипный метод, и записывать в него QML элементы нельзя, в нем должен быть код. Создай анимацию вне метода, а внутри просто запусти


Название: Re: onCLicked + PropertyAnimation
Отправлено: OKTA от Октябрь 02, 2012, 10:25
Да, точно! Разобрался! Спасибо! Вот пример, если кто тоже сразу не найдет)

Код:
 Rectangle {
     id: flashingblob
     width: 75; height: 75
     color: "blue"
     opacity: 1.0

     MouseArea {
         anchors.fill: parent
         onClicked: {
             animateColor.start()
             animateOpacity.start()
         }
     }

     PropertyAnimation {id: animateColor; target: flashingblob; properties: "color"; to: "green"; duration: 100}

     NumberAnimation {
         id: animateOpacity
         target: flashingblob
         properties: "opacity"
         from: 0.99
         to: 1.0
         loops: Animation.Infinite
         easing {type: Easing.OutBack; overshoot: 500}
    }
 }