我想使用canvas.drawText()方法逐帧绘制一些文本。当我用Java运行游戏时,一切都很好。但是当我在html中运行时,行为是不同的。我隔离了代码(见下文),得到了相同的结果。
package textbug.core;
import static playn.core.PlayN.*;
import playn.core.Canvas;
import playn.core.CanvasImage;
import playn.core.Game;
import playn.core.Image;
import playn.core.ImageLayer;
public class TextBugIsolated implements Game {
Canvas canvas;
int x = 20;
@Override
public void init() {
// create and add background image layer
Image bgImage = assetManager().getImage("images/bg.png");
ImageLayer bgLayer = graphics().createImageLayer(bgImage);
graphics().rootLayer().add(bgLayer);
CanvasImage canvasImage = graphics().createImage(graphics().width(), graphics().height());
ImageLayer imageLayer = graphics().createImageLayer();
imageLayer.setImage(canvasImage);
graphics().rootLayer().add(imageLayer);
canvas = canvasImage.canvas();
}
@Override
public void paint(float alpha) {
canvas.clear();
canvas.drawText("PlayN is cool!", x++, 20);
canvas.drawText("Hello World", 20, 100);
}
@Override
public void update(float delta) {
}
@Override
public int updateRate() {
return 25;
}
}
我希望文字“PlayN很酷!”像Java一样水平移动,但事实并非如此。我试图调试,但我不能介入本机代码。
任何人都有线索?我在尝试禁止的东西吗?
答案 0 :(得分:1)
这是一个已知问题,如文档here所述。它只影响HTML后端。这似乎正是你所看到的。
答案 1 :(得分:0)
您的代码对我来说很好。
你是否等待图片加载,因为safari中的情况可能是在drawText之后加载并在其上绘制..在java中可能加载速度足够快以便加载。
关心done()回调...所以它在加载图像后设置文本更新