使用QML中的计时器安排动画
我想创建一个从列表开始动画的组件。下面我提供了一个我想做的例子。我不知道这在性能和计时器准确性方面是否正确。为每个动画使用专用计时器是否更好使用QML中的计时器安排动画,qml,qtquick2,Qml,Qtquick2,我想创建一个从列表开始动画的组件。下面我提供了一个我想做的例子。我不知道这在性能和计时器准确性方面是否正确。为每个动画使用专用计时器是否更好 import QtQuick 2.0 Item { id: root function startOne() { animOne.start() } function startTwo() { animTwo.start() } property var listEve
import QtQuick 2.0
Item {
id: root
function startOne() {
animOne.start()
}
function startTwo() {
animTwo.start()
}
property var listEvent: {
1000: root.startOne,
2000: root.startTwo
}
property int elapsed: 0
property int last_elapsed: 0
Rectangle {
id: one
x: 0
y: 0
width: 200
height: 200
color: "black"
}
Rectangle {
id: two
x: 600
y: 600
width: 200
height: 200
color: "black"
}
PropertyAnimation {
id: animOne
target: one
properties: "x"
to: 600
running: false
}
PropertyAnimation {
id: animTwo
target: two
properties: "x"
to: 0
running: false
}
function pop(last_elapsed, elapsed) {
for (var i = last_elapsed; i <= elapsed; i++) {
if (i in root.listEvent) {
listEvent[i]()
}
}
}
function scheduleEvent(delta) {
root.last_elapsed = root.elapsed
root.elapsed += delta
root.pop(root.last_elapsed, root.elapsed)
}
Timer {
id: scheduler
interval: 16
running: true
repeat: true
onTriggered: {
root.scheduleEvent(scheduler.interval)
console.log("timer: " + root.elapsed)
}
}
}
导入QtQuick 2.0
项目{
id:根
函数startOne(){
animOne.start()
}
函数startTwo(){
第二,开始
}
属性变量listEvent:{
1000:root.startOne,
2000:root.startTwo
}
属性:0
上次运行的属性int:0
长方形{
身份证号码:1
x:0
y:0
宽度:200
身高:200
颜色:“黑色”
}
长方形{
身份证号码:两张
x:600
y:600
宽度:200
身高:200
颜色:“黑色”
}
物业估价{
id:animOne
目标:1
属性:“x”
至:600
跑步:错
}
物业估价{
身份证号码:2
目标:两个
属性:“x”
致:0
跑步:错
}
函数pop(上次运行,已运行){
对于(var i=LastTyelEsPy;i Time< /Cord>)实际上并不准确(参见),但它仍然可以用于示例中使用的分辨率。C++解决方案(例如)可以大大提高精度。关于性能……,它嗅到我们在这里陷入了过早的优化。