qml - 将指针/引用传递给对象

标签 qml qt5 qtquick2

我正在编写一个简单的游戏,其中有 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/

相关文章:

qt - 从另一个 QML 文件访问 TextField

c++ - 如何处理 KDE5 plasmoid 中第二台显示器的连接?

c++ - Qt 5 无法在 SnowLeopard 上部署

multithreading - QGLWidget 在另一个线程中?文档指的是什么?

qt - 中继器接入元件

qt - 如何以编程方式创建选项卡的项目?

javascript - 通过 Javascript 在 Qml 中更改时字符串的末尾被 chop

c++ - 为什么我不能用 Qt5/C++ 解析 Cryptsy JSON API?

qml - 如何在 QML swipeview 中实现翻页按钮

qt - 在调试时在注册类中调用 qmlRegisterType() 会导致应用程序崩溃