如何制作QML矩形?

时间:2013-01-11 12:07:17

标签: javascript qml

我正在制作一款名为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)

  •   

2 个答案:

答案 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();
}