Во-первых (чтобы ответить на ваш вопрос), вы не можете использовать отрицательные размеры. Вместо этого используйте масштабирование, которое поддерживает отрицательные значения.
Scale {
yScale: ... // <-- change this value; 1 = original size
Image {
x: 150; y: 150
width: 20; height: 10 // <-- use constant size
source: "Bar.jpg"
}
}
Во-вторых, вам определенно следует прочитать об анимациях в QML. В QML вам не нужны таймеры для реализации анимации. Идея состоит в том, что вы указываете только начальное и конечное значение анимируемого свойства и активируете эту анимацию. Вы также можете настроить скорость/продолжительность анимации и даже кривую замедления (для замедления анимации в конце и причудливых вещей, таких как подпрыгивание...). Одним из примеров может быть:
import QtQuick 1.1
Rectangle {
width: 300; height:300
Scale {
Image {
x: 150; y: 150
width: 20; height: 10
source: "Bar.jpg"
}
NumberAnimation on yScale {
from: 1
to: -1
running: ... // <-- Animation is running while expression is true
}
}
}
Или, если вы не хотите использовать выражение с привязкой свойства к Animation.running, вы также можете использовать методы Animation.start(), stop() и т. д. (Установите идентификатор анимации, чтобы сделать ее доступной из JavaScript.)
Но понимание и работа с привязками свойств в выражениях является важной частью QML, поэтому вы должны попытаться выразить то, что вы хотите, с помощью выражений, а не с помощью вызовов методов, событий, условий и т. д. Таков QML и почему он прекрасен. ;)
person
leemes
schedule
16.10.2012