我正在编写一个简单的游戏,其中有 Player
对象和 Enemy
对象。我希望 Enemy
追赶 Player
,但我不知道将当前 Player
的位置传递给 Enemy 的正确方法是什么
.
我本身是一名 C++ 开发人员,所以我很自然地考虑将 Player
(可能作为一个接口(interface))传递给 Enemy
但我找不到任何关于这种方法的线索QML。
那我该怎么办呢?
最佳答案
嗯,最好的方法是使用像 hyde
已经指出的属性绑定(bind)。
// Enemy.qml
Item {
property int targetX
property int targetY
// more code
}
// Player.qml
Item {
property int currentPosX
property int currentPosY
}
// Main.qml
Enemy {
id: enemy
targetX: player.currentPosX
targetY: player.currentPosY
}
Player {
id: player
// Some calculation for the current x and y position
}
另一种方法是将 Player
组件传递给 Enemy
组件。但比你有一点耦合。这也许就是你指出的C++思维。
// Enemy.qml
Item {
id: enemy
property Item myPlayer
Component.onCompleted: {
console.log(enemy.myPlayer.currentPosX +
" | " +
enemy.myPlayer.currentPosY)
}
}
// Player.qml
Item {
property int currentPosX
property int currentPosY
}
// Main.qml
Enemy {
id: enemy
myPlayer: player
}
Player {
id: player
// Some calculation for the current x and y position
}
关于qml - 将指针/引用传递给对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33833576/