これが私の最後の質問にフォローアップされています、私はプログラム的に(する必要がない単一色付きの円を作成し、2-Dの平野を渡ってそれを動かすために私の単純なケースの場合PlayNでサークルをアニメーション化するにはどうすればよいですか?
How can I draw a circle to the screen with PlayN?
たいbox2d libを使用してください)。
実際の例では、複数のサークルをアニメーション化する必要があります。この場合の二つの実例(申し訳ありませんが、私はリンクを削除する必要がありました - 十分ではありませんカルマを!):
- Browsmosをクロームため
- 蟻AIチャレンジ
それはでした私の最後の質問に答えて、ImmediateLayer classを使用したいと考えているので、これを私のゲームループに適切に組み込む方法を理解したいと考えています。左から右へ
public class SimpleCircleAnimation implements Game {
// Surface
private GroupLayer rootLayer;
private ImmediateLayer surface;
private Canvas canvas;
private Circle circle;
private CanvasImage circleImage;
@Override
public void init() {
// create root layer
rootLayer = graphics().rootLayer();
// a simple circle object
int circleX = 0; int circleY = 0;
int circleRadius = 20;
circle = new Circle(circleX, circleY, circleRadius);
// create an immediate layer and add to root layer
ImmediateLayer circleLayer = graphics().createImmediateLayer(new ImmediateLayer.Renderer() {
public void render (Surface surf) {
circleImage = graphics().createImage(circle.radius*2, circle.radius*2);
canvas = circleImage.canvas();
canvas.setFillColor(0xff0000eb);
canvas.fillCircle(circle.radius, circle.radius, circle.radius);
surf.drawImage(circleImage, circle.x, circle.y);
}
});
rootLayer.add(circleLayer);
}
@Override
public void paint(float alpha) {
}
@Override
public void update(float delta) {
// move circle
int newX = circle.x + 4; int newY = circle.y + 4;
circle.setPoint(newX, newY);
}
@Override
public int updateRate() {
return 25;
}
}
はこれが正常に画面下に斜めに円を移動します。
ここにありますが、私のコードサンプルです。いくつかの質問:
- これは適切に実装されていますか?
- 複数のアニメーションサークルの場合、レンダラーコールバック内の各サークルに円画像を作成するというアイデアレイヤーのアイデアですか?または、おそらく各サークルのイミディエイトレイヤーを作成し、それらをルートレイヤーに追加しますか?
私はここに例のリンクを追加することができるかどうか見てみましょう:[Browsmos](のhttp:// html5games。 com/2011/06/browsmos /)、[Ant AI Challenge](http://aichallenge.org/visualizer.php?game=346330) – klenwell