1

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

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

4

2 回答 2

1

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

于 2012-02-22T17:01:21.537 回答
0

你的代码对我来说看起来不错。

您是否等待图像加载,因为 safari 中的情况可能是它在 drawText 之后加载并在其上绘制.. 而在 java 中,加载速度可能足够快,因此加载得很好。

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

于 2012-02-16T09:59:08.147 回答