在JavaFX中,我試圖通過單擊並拖動它來移動節點。如果節點沒有旋轉,它會工作得很好,但是當我旋轉它時,它會開始表現怪異。JavaFX拖動旋轉節點
在45°左右,當我移動它時開始抖動,在60°時它猛烈地來回跳動。當我開始移動它時,節點在90°處飛行。
這裏是我用來旋轉和移動節點的代碼。它來自連接到節點的MouseListener。
if(event.getEventType() == MouseEvent.MOUSE_RELEASED) {
(this.lastEvent == MouseEvent.MOUSE_PRESSED) {
if(getRotate() == 0) {
setRotate(90d);
} else {
setRotate(0d);
}
}
}
if(event.getEventType() == MouseEvent.MOUSE_DRAGGED) {
if(getRotate() == 0) {
setTranslateX(getTranslateX() + event.getX());
setTranslateY(getTranslateY() + event.getY());
System.out.print(" trX: " + getTranslateX());
System.out.print(" evX: " + event.getX());
System.out.println(" evY: " + event.getY());
} else {
setTranslateX(getTranslateX() + event.getX());
setTranslateY(getTranslateY() + event.getY());
System.out.print(" trX: " + getTranslateX());
System.out.print(" evX: " + event.getX());
System.out.println(" evY: " + event.getY());
}
}
編輯:下面是一些示例輸出,以及畫面顯示不同的節點。
輸出時不旋轉,慢慢移動到左邊:
trX: 333.0 evX: -1.0 evY: 0.0
trX: 333.0 evX: 0.0 evY: -1.0
trX: 332.0 evX: -1.0 evY: 0.0
trX: 332.0 evX: 0.0 evY: -1.0
trX: 331.0 evX: -1.0 evY: 0.0
trX: 330.0 evX: -1.0 evY: -1.0
trX: 330.0 evX: 0.0 evY: 1.0
輸出時,慢慢移動到左邊,而旋轉:
trX: 102.0 evX: 142.0 evY: -245.0
trX: 489.0 evX: 387.0 evY: -102.0
trX: 978.0 evX: 489.0 evY: 286.0
trX: 1181.0 evX: 203.0 evY: 776.0
trX: 607.0 evX: -574.0 evY: 979.0
trX: -947.0 evX: -1554.0 evY: 405.0
trX: -2905.0 evX: -1958.0 evY: -1149.0
trX: -3714.0 evX: -809.0 evY: -3106.0
trX: -1417.0 evX: 2297.0 evY: -3914.0
trX: 4795.0 evX: 6212.0 evY: -1617.0
trX: 12623.0 evX: 7828.0 evY: 4595.0
trX: 15857.0 evX: 3234.0 evY: 12423.0
trX: 6668.0 evX: -9189.0 evY: 15658.0
trX: -18180.0 evX: -24848.0 evY: 6469.0
trX: -49497.0 evX: -31317.0 evY: -18378.0
trX: -62436.0 evX: -12939.0 evY: -49694.0
trX: -25681.0 evX: 36755.0 evY: -62632.0
trX: 73706.0 evX: 99387.0 evY: -25876.0
trX: 198969.0 evX: 125263.0 evY: 73512.0
trX: 250720.0 evX: 51751.0 evY: 198776.0
trX: 103694.0 evX: -147026.0 evY: 250526.0
trX: -293858.0 evX: -397552.0 evY: 103501.0
trX: -794910.0 evX: -501052.0 evY: -294051.0
trX: -1001912.0 evX: -207002.0 evY: -795103.0
trX: -413811.0 evX: 588101.0 evY: -1002104.0
外框是'父'節點,而內部黑框帶有文字「不」一個侏儒「是我試圖移動的節點。 將鼠標事件偵聽器添加到內部節點。
你從輸出中得到了什麼?我想這可能與double到int的四捨五入有關。這個代碼定義在哪個節點上? – hotzst