作者PsMonkey (痞子军团团长)
看板java
标题[GWT] ImageBundle 冷知识...
时间Wed Jun 24 22:00:17 2009
ImageBundle 是个节省 server 负担的好物。
当应用程式当中有一堆细碎的小图,
用 GWT 的 ImageBundle 就可以把他合成「一张」大图,
这样就可以省下一堆建立 request/response 的时间(甚至会被 cache 住,更省)。
至於如何 show 出指定的小图,当然也是 ImageBundle 帮你顾好好 \囧/
[怎麽用?]
假设你有两个图片,做「next.jpg」、「prev.jgp」,
那麽写这样一个 interface 出来:
package pt2.gwt.client;
public interface ImageGetter extends ImageBundle{
//图档的主档名要跟 method 的名称是一样的。
public abstract AbstractImagePrototype next();
public abstract AbstractImagePrototype prev();
}
图片也要一起放到 pt2/gwt/client 这个目录下
(就是跟 interface 的档案放在一起)。然後这样子用:
ImageGetter imageGetter = GWT.create(ImageGetter.class);
Image nextImg = imageGetter.next().createImage();
就可以取得 next 这张图的 Image 物件了。
[变化型]
如果需要动态切换两套不同的图集,那要怎麽办呢?
第一直觉当然是继承,於是乎弄了两个 ImageSet1, ImageSet2
对应的图集合也放在对应的目录下,而 pt2/gwt/client 的图档要移除。
package pt2.gwt.client.style1;
public interface ImageSet1 extends ImageGetter{
public abstract AbstractImagePrototype next();
public abstract AbstractImagePrototype prev();
}
///////////////////////////////////////////////
package pt2.gwt.client.style2;
public interface ImageSet2 extends ImageGetter{
public abstract AbstractImagePrototype next();
public abstract AbstractImagePrototype prev();
}
使用上用到的多型跟继承的观念就跳过。这边的重点就在於,
ImageSet1 跟 ImageSet2 仍然必须要重新宣告一次所有的 method。
不然 GWT compiler 会以 ImageGetter 为基准找图档... Orz
[隐忧]
当 ImageBundle 出来的图太大、server response 的时间太久的话,
在 IE 上头就会发生死翘翘的状况。
广告时间... Web 版
http://pt2wiki.twbbs.org/Wiki.jsp?page=GWT_ImageBundle
--
侃侃长论鲜窒碍 首页:
http://www.psmonkey.idv.tw
众目睽睽无心颤 Blog:
http://ps-think.blogspot.com
茕居少聊常人事
杀头容易告白难 欢迎参观 Java 版(@ptt.cc) \囧/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 58.114.200.219
1F:推 pico2k:catch ? cache?... 06/25 10:58
typo,谢谢指正
※ 编辑: PsMonkey 来自: 58.114.200.219 (06/25 15:07)
2F:推 TonyQ:这看起来像是类似 css sprite 技巧的应用 ?.? 06/27 21:45