繁体   English   中英

ClientBundle 不加载 ImageResource

[英]ClientBundle don't load the ImageResource

我尝试使用 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);

}

我创建了一个简单的 Canvas 并将大小设置为 800x600。 我创建了一个新的 Context2D Object 以在上下文中绘制图像并将 Canvas 添加到 RootPanel。

日志显示:

[20:10:21.676] - 启动引擎 [20:10:21.851] - 可见:真 [20:10:21.853] - http://127.0.0.1:8888/engine/7D39451825E9952050F44A6B8EpngF2E153.cache.

该图像存在于记录的 URL 下,因此一切看起来都很好。 但是图像不会被绘制,或者它会绘制但不显示。

有人有想法吗?

我认为 ClientBundle 将图像加载为后端的开始。 那么,如果我得到一个实例,每个 Image/Css 和其他填充都会被加载?

问候马库斯

图片内容不保证同步加载。 根据浏览器的功能和图像数据的大小,资源可能会存储为独立文件,这似乎是您所描述的情况(即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);

如果您在 UiBinder 之外使用 CSSResources 和 ImageBundles,则必须确保正确注入样式表和图像。

请参阅此处了解更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM