编辑这是一个已在https://github.com/threerings/playn/commit/137ce50dddd2716f84c38ec1568d7ae5a368434b中修复的错误。有关详细信息,请参阅 Par Eklund 的答案。
开始之前:我一般是游戏编程的新手,所以我很可能对我正在使用的工具有根本的误解。不过我会继续我的问题...
每当我尝试在该paint
方法期间在我的表面层上绘制一些东西时,我都会出现黑屏。如果我在该方法期间绘制init
它显示正常。
我正在尝试在此处复制Surface Layer横幅下的代码。有问题的代码是这样的:
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);
}
}
我使用的是 PlayN 1.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 项目并使用完全相同的代码,它在绘制方法期间渲染得很好(鉴于我仍在使用完全相同的代码,我不确定 PlayN 网站在其示例中使用的是哪个版本代码...)。
我在这里错过了什么?1.4 改变了与表面层有关的东西,我现在必须以不同的方式使用它吗?谢谢。