2015-06-24 38 views
0

我沒有基礎代碼或示例從此開始....只是在我腦海中拋出這個想法。JavaFX將沿着角度路徑的對象移動到一定的值

所以我會有一個像滑塊...在30度角,並需要一個酒吧或對象沿該路徑移動到一定的比例或值。

從我有限的知識中,我認爲我需要使用插補器....但我甚至從哪裏開始呢?

我的目標是給這個方法一個值,比如介於1和100之間。然後,對象或條會動畫到路徑上的那個位置。像條形圖,但用作量表。

+1

也許這樣? https://docs.oracle.com/javafx/2/animations/basics.htm或https://docs.oracle.com/javase/8/javafx/api/ – NwDev

+1

只需將該值表示爲DoubleProperty。將對象的x和y座標綁定到基於該值的值:例如,對於30度線,「x = value * Math.cos(Math.toRadians(30))」,因此您可以執行「對象」。 layoutXProperty()。bind(value.multiply(0.866025));'等等。如果卡住了,試試它併發佈一個特定的問題。 –

+0

太棒了!經過過去24年的大量研究(我有點迷戀) - 嘗試了一些基本的東西,並圍繞我調整,我認爲我正在學習這個特定問題的正確途徑。 James_D你真棒。完美的指引,讓我開始或至少,給我想要變出的東西的定義。獎勵! – Redracer68

回答

0

只是一個更新....

我結束了去使用一些舊的數學更手動的路線。 :) 考慮到我知道酒吧需要移動多少,以及需要移動的角度。 Sin和Cos是我的朋友。

似乎很快反應也很順利!

  double oldx = RBar.getX(); 
      double oldy = RBar.getY(); 
      double moveval = oldacc + averageACC; 
      double angle = -30 * Math.PI/180; 
      double newx = oldx - moveval * Math.sin(angle); 
      double newy = oldy - moveval * Math.cos(angle); 
      double movex = newx + oldx; 
      double movey = newy + oldy; 


      Platform.runLater(new Runnable() { 
       @Override 
       public void run() { 
        final Timeline timeline = new Timeline(); 
        timeline.setCycleCount(1); 
        timeline.setAutoReverse(true); 
        final KeyValue targetkvx = new KeyValue(RBar.translateXProperty(), movex); 
        final KeyValue targetkvy = new KeyValue(RBar.translateYProperty(), movey); 
        final KeyFrame kf = new KeyFrame(Duration.millis(100), targetkvx, targetkvy); 
        timeline.getKeyFrames().add(kf); 
        timeline.play(); 
       } 
      }); 
      oldacc = averageACC; 

感謝您讓我走上正確的道路!