Я пытаюсь использовать реализацию 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 и другие заполненные файлы будут загружены?
Регарс Маркус