对于使用JavaFX开发游戏而言,一切都是绘制到Canvas上的。有时候我们需要对某一个绘制的物体进行旋转。
大家可以看到Canvas的API里有如下一条:
但是该rotate方法是旋转的当前的transform,所以如果直接使用的话,无法达到我们需要的效果。
这样我们就需要使用到javax.scene.transform.Rotate类了。
添加代码如下:
public void drawObject(GraphicsContext gc) {
gc.save();
gc.setGlobalAlpha(getAlpha());
Rotate r = new Rotate(getRotate(), getX() + getWidth() / 2, getY() + getHeight() / 2);
gc.setTransform(r.getMxx(), r.getMyx(), r.getMxy(), r.getMyy(), r.getTx(), r.getTy());
draw(gc);
gc.restore();
}
在上面的Rotate第一个参数表示旋转的角度,后面表示绕着某个(X,Y)点进行旋转,稍微计算一下,可以很轻易的让绘制的物体绕着自己中心轴旋转,来达到我们的目的。
文章评论