我的问题非常简单。但希望我能有一个明确的答案。我们可以通过多种方式创建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创建新图像的这三种方法之间有什么区别。第一次加载时,哪一个最好或更快?
感谢
首先,不应该使用最后两个。
ImageResource
在技术上代表"精灵"图像中的一个区域:它有一个精灵的URL和该图像上区域的坐标。在许多浏览器中,对于大多数图像,URL实际上是data:
URL,区域将代表整个图像。这可以使用@ImageOptions(preventInlining=true)
在每张图像的基础上进行控制,也可以在gwt.xml
上使用set-property
进行全局控制。换句话说,您的代码不应该依赖它,并且应该始终将ImageResource
视为精灵图像中的区域
仅供参考,在默认情况下,实际使用精灵图像的情况是不支持data:
URL的IE6/7,以及太大而无法容纳在data:
URL中的图像(所有浏览器)。
然而,这正是您在最后两种情况下所做的:只使用ImageResource
的URL,就好像它(可能)不是一个精灵图像一样。