[GWT] ImageBundle 冷知識...
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
推
06/25 10:58, , 1F
06/25 10:58, 1F
typo,謝謝指正
※ 編輯: PsMonkey 來自: 58.114.200.219 (06/25 15:07)
推
06/27 21:45, , 2F
06/27 21:45, 2F