2009-11-29 100 views
1

我正在使用JavaFX製作遊戲並實施了用於控制遊戲速度的滑塊。我有一個簡單的滑塊(javafx.scene.control.Slider),我將gameloop的time屬性綁定到我從滑塊獲得的值。動態更改JavaFX中的關鍵幀時間屬性

滑塊僅在增加遊戲速度時才起作用。如果我減少它,gameUpdate()將停止一段時間 - 取決於我有多少錢。如果我在等待比賽追上時增加滑塊,遊戲將會繼續。有時候,無論等待多久,遊戲似乎都無法趕上。

正在改變關鍵幀時間是一個糟糕的主意,或者我忘了其他的東西嗎? 我一直在嘗試改變canSkip變量,並且這似乎讓遊戲在重新啓動時運行更順暢,但對我沒有多大幫助。

def gameLoop:Timeline = Timeline{ 
    repeatCount: Timeline.INDEFINITE 
    keyFrames: [ 
     KeyFrame{ 
      time: bind Duration.valueOf(Config.REFRESH_RATE_NUMBER - gameSpeed) 
      action: function(){ 
       gameUpdate(); 
      } 
     } 
    ]//keyFrames[] 
}// Timeline{} 

回答

1

我所看到的,而類似這樣的(雖然JavaFX的1.1.1),我在JIRA

報道,我發現這是解決了,如果我從移動腳本級別聲明的情況 - 在我的情況這是進入初始化函數(而不是init {}塊)。

但我同意動態改變關鍵幀時間是一個壞主意。 顯然不支持在您發佈的代碼片段中使用「子時間線」,相反推薦的解決方案是使用JavaFX 1.2 SequentialTransitionParallelTransition時間軸。

閱讀JIRA錯誤報告瞭解更多信息,如果不能解決問題,請回復。

+0

除非我誤解了(這一直髮生),我沒有在我的代碼片段中使用任何子時間線。原始時間軸中關鍵幀內的子時間線時間軸不是?就我所知,在JIRA上發佈的代碼部分應該不會影響時間改變。變化的變量的時間似乎仍然是問題。移動聲明時我也無法工作。你把它移到整個腳本之外了嗎? – Vargen 2009-12-03 12:36:11

+0

我希望bug報告能給你一些指導,而不是一個直接的解決方案。繼續前進,有沒有什麼方法可以嘗試使用* Transition類呢?當我嘗試時,我確實覺得這個區域比較麻煩,所以如果你還沒有成功,也許你可以嘗試在JIRA中升級? – 2009-12-04 10:54:53

0

我建議在函數中生成一個關鍵幀序列,然後刪除並重新設置關鍵幀。看起來它可能會嘗試在用戶拖動滑塊時調整時間軸。