Странное поведение PlayN canvas.drawText() в HTML (Java в порядке)

Я хочу использовать метод 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, но это не так. Я пытался отладить, но я не могу войти в собственный код.

Кто-нибудь знает? Я пытаюсь сделать что-то запрещенное?


person Simon Dansereau    schedule 14.02.2012    source источник
comment
Я забыл упомянуть, что тестировал на Chrome. Я также тестировал с Safari, но на этот раз текста вообще не было.   -  person Simon Dansereau    schedule 15.02.2012
comment
У меня такая же проблема с canvas.drawImage... Нет изображения на экране: |   -  person Simon Dansereau    schedule 16.02.2012


Ответы (2)


Это известная проблема, описанная здесь. Это влияет только на бэкэнд HTML. Кажется, это именно то, что вы видите.

person XMoby    schedule 22.02.2012

Ваш код выглядит хорошо для меня.

Вы ждете, пока изображение загрузится, потому что случай в сафари, возможно, загружается после drawText и закрашивает его ... и в java, вероятно, загрузка достаточно быстрая, поэтому она загружается нормально.

позаботьтесь о обратном вызове done()... поэтому он устанавливает обновление текста после загрузки изображения

person Darwly    schedule 16.02.2012
comment
Даже если я уберу изображение, текст не двигается. Похоже, это проблема с классом Canvas. - person Simon Dansereau; 16.02.2012
comment
У меня также были некоторые странные проблемы с canvas.clear() .. не могли бы вы удалить его... ничего не очищайте, просто нарисуйте его... и напишите ответ.. я буду более четко смотреть в вашем коде - person Darwly; 16.02.2012