我尝试使用 ClientBundle 实现将我的图像管理到一个大文件并最小化 HTTP 请求。
我把我的 gwt.xml
生成 ClientBundle
公共接口 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);
}
我创建了一个简单的画布并将大小设置为 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 将图像加载为后端的开始。那么,如果我得到一个实例,每个 Image/Css 和其他填充都会被加载?
问候马库斯