1

我目前正在制作一款名为 Snowflake 的游戏,以学习如何使用 Javascript 编写 QML。

  • 我在这里有我的源代码:https ://gist.github.com/4510190 。

除此之外,我得到的唯一文件是默认的 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(骷髅)

  • Qt.createQmlObject(骷髅)

4

2 回答 2

2

您使用了错误的 Qt.createQmlComponent()。它需要3个参数:

Qt::createQmlObject ( string qml, object parent, string filepath )

所以它应该看起来像这样(父元素应该是应该包含头骨的元素的 id):

Timer { //spawnrate
         interval: 2000; running: true; repeat: true
         onTriggered: Qt.createQmlObject("YOUR skullflake QML CODE (NOT FILE PATH)", parent, "skullflake")
     }
于 2013-01-14T23:48:06.247 回答
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();
}
于 2013-01-11T22:58:51.823 回答