我正在制作一款名为Snowflake的游戏,以学习如何使用Javascript编写QML。
除此之外我唯一的文件是默认的qmlproject文件和png文件。
我已经制作了这个计时器(Timer)和一个矩形(skullflake),它应该为它完成的每个间隔产生。
Timer { //spawnrate
interval: 2000; running: true; repeat: true
onTriggered: Qt.createQmlObject(skullflake)
}
但是当我尝试运行它时,它给了我错误:
file:///where/the/project/is/saved/Snowflake/Snowflake.qml:21:错误:Qt.createQmlObject():参数无效
我已尝试过这两个元素,但我似乎无法使其正常工作
Qt.createComponent(skullflake)
Qt.createQmlObject(skullflake)
答案 0 :(得分:2)
您使用了错误的Qt.createQmlComponent()。 它需要3个参数:
Qt::createQmlObject ( string qml, object parent, string filepath )
所以它应该看起来像这样(父元素应该是元素的id,应该包含skullflake):
Timer { //spawnrate
interval: 2000; running: true; repeat: true
onTriggered: Qt.createQmlObject("YOUR skullflake QML CODE (NOT FILE PATH)", parent, "skullflake")
}
答案 1 :(得分:1)
我使用Qt.createComponents()解决了这个问题,这需要你在旁边使用QML文件或使用Component元素。
Item {
id: container
width: 300; height: 300
function skullFlake() {
var component = Qt.createComponent("Skullflake.qml");
if (component.status == Component.Ready) {
var flake = component.createObject(container);
flake.color = "purple";
}
}
Component.onCompleted: loadButton()
}
Timer { //spawnrate
interval: 2000; running: true; repeat: true
onTriggered: skullFlake();
}