fillRect似乎不会填充整个Rectangle

时间:2014-02-12 00:35:09

标签: java playn

我有这个非常简单的代码:

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));

}

第一部分应该在屏幕的上半部分形成天空,第二部分是底部四分之一的背景颜色。

我有以下结果:

enter image description here

当我评论第一个fillRect()时,我得到了预期的结果,仅针对地面部分:

enter image description here

控制台显示两种情况:

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,同样的代码工作正常。

1 个答案:

答案 0 :(得分:1)

这是1.8版本中的一个错误,自修复以来。我将发布1.8.1版本,因为有一些麻烦的错误已经出现。