ClientBundle не загружает ImageResource - PullRequest
1 голос
/ 18 июля 2011

Я пытаюсь использовать реализацию ClientBundle для управления своими изображениями в большом файле и минимизации HTTP-запросов.

Я положил в свой gwt.xml

Создание клиентского пакета

открытый интерфейс ResourceBundle расширяет ClientBundle {

public static final ResourceBundle INSTANCE = GWT.create(ResourceBundle.class);

@Source("tiles/smiley.png")
ImageResource smiley();

}

Изображение будет найдено, ошибок нет.

Вот код

@ Override public void onModuleLoad () {

    CLogger.log("Start Engine");

    int width = 800;
    int height = 600;

    Canvas canvas = Canvas.createIfSupported();
    canvas.setWidth(width + "px");
    canvas.setHeight(height + "px");
    canvas.setCoordinateSpaceWidth(width);
    canvas.setCoordinateSpaceHeight(height);
    Context2d c = canvas.getContext2d();

    Image img = new Image(ResourceBundle.INSTANCE.smiley());
    img.addLoadHandler(new LoadHandler() {

        @Override
        public void onLoad(LoadEvent event) {
            CLogger.log(event.getSource() + " loaded");
        }
    });
    CLogger.log("Visible: " + img.isVisible());

    c.drawImage((ImageElement) new Image(ResourceBundle.INSTANCE.smiley()).getElement().cast(), 0, 0);

    RootPanel.get().add(canvas);

}

Я создаю простой Canvas и устанавливаю размер 800x600. Я создаю новый объект Context2D для рисования изображения в контексте и добавляю холст к RootPanel.

Журналы показывают:

[20: 10: 21.676] - Запустить двигатель [20: 10: 21.851] - Видимый: правда [20: 10: 21.853] - http://127.0.0.1:8888/engine/7D39451825E9952050F44A6B8E2E15F3.cache.png

Изображение существует под зарегистрированным URL, поэтому все выглядит хорошо. Но изображение не будет нарисовано, или оно будет рисовать, но не отображать.

У кого-нибудь есть идея?

Я думал, что ClientBundle загружает изображения как начало в бэкэнд. Так что, если я получу Экземпляр, все изображения / CSS и другие заполненные файлы будут загружены?

Регарс Маркус

Ответы [ 2 ]

0 голосов
/ 19 июля 2011

Если вы используете CSSResources и ImageBundles вне UiBinder, вы должны убедиться, что таблица стилей и изображения введены правильно.

См. здесь для получения дополнительной информации.

0 голосов
/ 19 июля 2011

Не гарантируется синхронная загрузка содержимого изображения. В зависимости от возможностей браузера и размера данных изображения ресурс может быть сохранен в виде отдельного файла, который, как представляется, соответствует описываемому вами случаю (т.е. cache.png). Имеет ли такая формулировка какое-то значение?

final Image img = new Image(ResourceBundle.INSTANCE.smiley());
img.addLoadHandler(new LoadHandler() {
  public void onLoad(LoadEvent e) {
    c.drawImage((ImageElement) img.getElement());
  }
}
RootPanel.get().add(img);
...