[GWT] ImageBundle 冷知識...

看板java作者 (痞子軍團團長)時間16年前 (2009/06/24 22:00), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串1/1
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
catch ? cache?...
06/25 10:58, 1F
typo,謝謝指正 ※ 編輯: PsMonkey 來自: 58.114.200.219 (06/25 15:07)

06/27 21:45, , 2F
這看起來像是類似 css sprite 技巧的應用 ?.?
06/27 21:45, 2F
文章代碼(AID): #1AGZ5qQ3 (java)