編集これはhttps://github.com/threerings/playn/commit/137ce50dddd2716f84c38ec1568d7ae5a368434bで修正されたバグでした。詳細については、ParEklundの回答を参照してください。
始める前に:私は一般的にゲームプログラミングの初心者なので、使用しているツールについて根本的な誤解を持っている可能性が非常に高いです。しかし、私は私の質問を推し進めます...
メソッド中にサーフェスレイヤーに何かを描画しようとするとpaint
、黒い画面が表示されます。init
メソッド中に描画すると、OKと表示されます。
ここで、 SurfaceLayerバナーの下にあるコードを複製しようとしています。問題のコードは次のとおりです。
public void paint() {
// Draw 100 random peas imperatively.
surf.clear(0);
for (int i = 0; i < 100; ++i) {
int x = (int)(random() * WIDTH);
int y = (int)(random() * HEIGHT);
surf.drawImage(pea, x, y);
}
}
私はPlayN1.4を使用しているので、そのコードは私が書いているものと直接一致していませんが、少なくとも同等のものがあると思いました(白い長方形を描いている場合を除く)。
public void paint(final float alpha) {
surfaceLayer.surface().clear();
surfaceLayer.surface().setFillColor(Color.rgb(255, 255, 255));
for (int i = 0; i < 100; ++i) {
int x = (int) (Math.random() * width);
int y = (int) (Math.random() * height);
surfaceLayer.surface().fillRect(x, y, 5, 5);
}
}
画面には何もレンダリングされません。そのコードをinit
メソッドに移動すると、期待どおりにレンダリングされます。
興味深いことに、 PlayN 1.3.1プロジェクトを作成し、ペイントメソッドで正常にレンダリングされるまったく同じコードを使用すると(まったく同じコードを使用している場合、PlayNWebサイトがその例で使用しているバージョンがわかりません)コード...)。
私はここで何を逃しましたか?1.4はSurfaceLayerとの関係を変更しましたが、今は別の方法で使用する必要がありますか?ありがとう。