2014-03-29 2 views
4

내 QML 응용 프로그램에서 충돌 감지, "이동 가능"및 "선택 가능"플래그, 드래그 앤 드롭 등 일반적인 QGraphicsScene 및 QGraphicsObject 가능성이 필요합니다. QQuickItem에서 수업을 상속하거나 QML Canvas를 사용해야합니까? 물론 적은 코드를 작성하고 "QML 방식"을 선택하고 싶습니다.QML로 그래픽 항목을 그리는 가장 좋은 방법은 무엇입니까?

답변

2

QML의 충돌 감지에 Box 2D QML 플러그인을 사용할 수 있습니다. 그것은 많은 좋은 기능을 가지고 있으며 here에서 다운로드 할 수 있습니다.

직접 충돌 감지를 구현할 수도 있습니다.

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() 
     } 
    } 
} 
: 당신이 뭔가를 할 수있는 QML 항목 이동을 위해

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

이를 선택하여 예를 들어,