1

私は現在、Javascriptを使用してQMLをプログラムする方法を学ぶために、Snowflakeというゲームを作成しています。

それ以外に入手したファイルは、デフォルトのqmlprojectファイルとpngファイルだけです。

このタイマー(タイマー)と長方形(スカルフレイク)を作成しました。これらは、終了する間隔ごとに生成されます。

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)

4

2 に答える 2

2

間違った Qt.createQmlComponent() を使用していました。3 つのパラメーターが必要です。

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

したがって、次のようになります (parent は、skullflake を含む要素の 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 に答える