我的问题非常简单并且很好。但希望我能得到一个明确的答案。 我们可以通过多种方式创建GWT图像。
Image image = new Image ( (ImageResource)imageRes);
Image image = new Image ( (ImageResource)imageRes.getSafeUri() );
Image image = new Image ();
image.setUrl((ImageResource)imageRes.getSafeUri().asString() );
我的问题是:使用ImageResouce创建新图像的这3种方法有何不同。第一次加载哪一个最好或更快?
由于
答案 0 :(得分:4)
首先,你不应该使用最后两个。
ImageResource
技术上代表“sprited”图像中的区域:它具有精灵的URL和该图像上区域的坐标。在许多浏览器中,对于大多数图像,URL实际上是data:
URL,区域将代表整个图像。这可以使用@ImageOptions(preventInlining=true)
在每个图片上进行控制,也可以在set-property
上使用gwt.xml
进行全局控制。换句话说,您的代码不应该依赖它,并且应该始终将ImageResource
视为sprited图像中的区域。
仅供参考,实际使用sprited图像默认情况的情况适用于不支持data:
URL的IE6 / 7,以及太大而不能容纳{{1}的图像URL(所有浏览器)。
然而,这正是您在最后两种情况下所做的事情:仅使用data:
的URL,就好像它不是(可能)是一个sprited图像。