2014-03-29 66 views
4

在我的QML應用程序中,我需要常見的QGraphicsScene和QGraphicsObject可能性,如檢測碰撞,「移動」和「可選」標誌,拖放等。我應該從QQuickItem繼承我的類還是使用QML Canvas?當然,我想寫更少的代碼並選擇「QML方式」。哪個是使用QML繪製圖形項目的最佳方式?

回答

2

對於QML中的碰撞檢測,您可以使用Box 2D QML插件。它有很多好的功能,可以從here下載。

你也可以自己實現碰撞檢測。例如通過檢查這一點:

Math.sqrt((ball1.x-ball2.x)*(ball1.x-ball2.x)+(ball1.y-ball2.y)*(ball1.y-ball2.y))<epsilon 

爲了使一個QML項活動,你可以這樣做:

Image { 
    id: icon 
    width: 64 
    height: 64 
    source: "liverbird.gif" 

    MouseArea { 
     id: liverbirdMouseArea 
     anchors.fill: parent 

     property variant iconObj 
     property int startX 
     property int startY 

     onPressed: { 
      startX = mouseX 
      startY = mouseY 
      var iconComp = Qt.createComponent("icon.qml"); 
      iconObj = iconComp.createObject(parent); 
      iconObj.x = mouseX - iconObj.width/2 
      iconObj.y = mouseY - iconObj.height/2 
     } 
     onPositionChanged: { 
      iconObj.x += mouseX - startX 
      iconObj.y += mouseY - startY 
      startX = mouseX 
      startY = mouseY 
     } 
     onReleased: { 
      iconObj.destroy() 
     } 
    } 
} 
相關問題