我正在尝试在 qt 中处理 qml 中的精灵和动画,我真的不明白这样的事情,我如何动态地,即不断检查有关精灵的东西?例如,如何通过 if else 不断检查它的位置?这是我的代码:
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
SpriteSequence {
id: image
objectName: "sprSeq"
width: 25
height: 25
y:150
Sprite {
name: "1"
id: sprite
objectName: "ssprite"
source: "orangeGuy_animated.png"
frameCount: 18
frameWidth: 32
frameHeight: 26
frameSync: true
}
Sprite {
name: "2"
id: sprite2
source: "orangeGuy_animated_back.png"
frameCount: 18
frameWidth: 32
frameHeight: 26
frameSync: true
}
Sprite {
name: "3"
id: sprite3
source: "orangeGuy_animated.png"
frameCount: 1
frameWidth: 32
frameHeight: 26
frameSync: true
}
}
PropertyAnimation {
id: runningSprite
objectName: "runningSprt"
target: image
property: "x"
duration: 5000
from: 0
to: 500
//alwaysRunToEnd: true
onFinished: {
if (runningSprite.property === "y") {
image.jumpTo("3");
runningSprite.running = false
runningSprite.property = "y"
runningSprite.from = image.y
runningSprite.to = (image.y+60)
runningSprite.duration = 250
runningSprite.running = true
}
}
也就是说,我需要一个函数或其他东西,例如,执行以下操作:
if (sprite.x > 100) {
console.log("Вы за пределами карты!")
}
也就是说,据我了解,这需要不断监视我的精灵并不断检查的东西。请帮帮我。谢谢
qml 对象的属性有一个 Changed 信号。Sprite对象没有 x 属性。因此,您需要编写一个插槽来更改 frameX 或获取父对象的属性 x。
或者您可以创建一个 bool 类型的跟踪属性: