PlayN canvas.drawText()HTML中的奇怪行为(Java可以)

时间:2012-02-14 20:01:35

标签: playn

我想使用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一样水平移动,但事实并非如此。我试图调试,但我不能介入本机代码。

任何人都有线索?我在尝试禁止的东西吗?

2 个答案:

答案 0 :(得分:1)

这是一个已知问题,如文档here所述。它只影响HTML后端。这似乎正是你所看到的。

答案 1 :(得分:0)

您的代码对我来说很好。

你是否等待图片加载,因为safari中的情况可能是在drawText之后加载并在其上绘制..在java中可能加载速度足够快以便加载。

关心done()回调...所以它在加载图像后设置文本更新