2017-12-08 4 views
0

私はKotlinとTornadoFX/JavaFXを使って1/60秒ごとに再描画するビデオゲームに取り組んでいます。現在、私のプログラムは、背景を白に設定して描画することで再描画します。しかし、私は少しきれいなものを好むだろう。私は現在、それをどのように描いています。これはされていますJavaFXリセットグラフィックスコンテキスト

private fun drawShapes(gc: GraphicsContext) { 
    gc.fill = c(255, 255, 255) 
    gc.fillRect(0.0, 0.0, 700.0, 700.0) //Game is 700x700 
    gc.fill = c(94, 132, 233) 
    walls.forEach { gc.fillRect(it.x.toDouble(), it.y.toDouble(), it.w.toDouble(), it.h.toDouble()) } 
    gc.fill = c(255, 239, 20) 
    coins.filter { !it.collected }.forEach { gc.fillRect(it.x.toDouble(), it.y.toDouble(), it.w.toDouble(), it.h.toDouble()) } 
    //Cut off here because following is more of same 
} 
fixedRateTimer(period = 16, initialDelay = 500) { drawShapes(graphicsContext2D) } 

は、単にきれいに拭くの代わりに、互いの上に多くを重ねるする方法はありますか?私はそれをインターネットで検索しようとしましたが、何も見つかりませんでした。

+0

[遅延]問題の原因を確認するには[プロフィール](http://stackoverflow.com/q/2064427/230513)をご覧ください。 – trashgod

+0

@trashgodあなたがリンクしているプログラムをどのように使うべきかは分かりません。また、それは主に私にとってはちょうど良いことです。私は誤解を招く部分を取り除きます。 – fin444

+0

2つのアプローチが対比されています(https://stackoverflow.com/a/44141878/230513)。 – trashgod

答えて

0

本当にこれを行う方法はありません。しかし、キャンバスを空白にして再び描画しても問題は発生しませんでした。この問題はプログラムのもう一つの原因となっていました。

0

ゲームの背景が一貫して白い場合は、キャンバスの背後に白い背景色のペインを挿入することを検討します。現在のように前景画像を描画し、フレーム間のキャンバスをクリアするには、clearRectを使用します。

gc.clearRect(0.0, 0.0, 700.0, 700.0);