我有这个非常简单的代码:
private static final int SKY_COLOR = Color.rgb(161, 210, 241);
private static final int GROUND_COLOR = Color.rgb(171, 131, 35);
@Override
public void init() {
/* Draw the sky */
SurfaceImage backgroundTopImage = graphics().createSurface(graphics().width(), graphics().height() / 2);
backgroundTopImage.surface().setFillColor(SKY_COLOR);
//--> THE NEXT LINE
backgroundTopImage.surface().fillRect(0, 0, backgroundTopImage.width(), backgroundTopImage.height());
ImageLayer backgroundTop = graphics().createImageLayer(backgroundTopImage);
graphics().rootLayer().addAt(backgroundTop, 0, 0);
/*Draw the ground */
SurfaceImage groundBottomImage = graphics().createSurface(graphics().width(), graphics().height() / 4);
groundBottomImage.surface().setFillColor(GROUND_COLOR);
PlayN.log().debug("groundBottomImage.height()=" + groundBottomImage.height());
groundBottomImage.surface().fillRect(0, 0, groundBottomImage.width(), groundBottomImage.height());
ImageLayer groundBottom = graphics().createImageLayer(groundBottomImage);
PlayN.log().debug("graphics().height() * (3 / 4)=" + graphics().height() * (3f / 4f));
graphics().rootLayer().addAt(groundBottom, 0, graphics().height() * (3f / 4f));
}
第一部分应该在屏幕的上半部分形成天空,第二部分是底部四分之一的背景颜色。
我有以下结果:
当我评论第一个fillRect()
时,我得到了预期的结果,仅针对地面部分:
控制台显示两种情况:
Updating display mode: 1136 x 640 x 0 @0Hz, fullscreen: false
groundBottomImage.height()=160.0
graphics().height() * (3 / 4)=480.0
Playn 1.8
----编辑----
我恢复了PlayN 1.7,同样的代码工作正常。
答案 0 :(得分:1)
这是1.8版本中的一个错误,自修复以来。我将发布1.8.1版本,因为有一些麻烦的错误已经出现。