GameDesign 板


LINE

※ 引述《jijuan (雞卷)》之銘言: : 假設我有A B C三個物件 : 它們都會用到同一張(同一組)圖片(動畫) : 假設物件的建構式必須傳入圖片(動畫) : Img A = new Img("D://test.gif"); : Img B = new Img("D://test.gif"); : Img C = new Img("D://test.gif"); : 類似這樣 因為A一開始已經載入test.gif這張圖了 : 有沒有辦法B跟C使用跟A同一份就好了 : 而不用多載兩次到記憶體裡面 本來如果單單修改你這個架構,最簡單就是你多做一個建構式,如: Img A = new Img("D://test.gif"); Img B = new Img(A); // 直接去A裡面挖指標設給B 但這樣會發生依賴性的問題,A被delete掉時解構式要不要把那圖清掉呢?清的 話B再去用原本的指標就爛掉了,可是不清的話A跟B都清掉後沒人去清,你也沒任何 辦法去追蹤誰是最後一個該清的。 比較好的方法可能都是要更動架構,比如你要另外維護一個ImgPool,它裡面只 存了一張接一張會用到的圖,並給每一張圖一個Unique的id。而Img物件本身不提供 存圖的空間,它只拿著它需要圖的id,在需要時持id去跟ImgPool討指標來處理自己 的行為。 ○ImgPool [基本功能] 1.可以讀入一張圖進Pool裡並給予Unique id(可由使用者指定,只要保持Unique) 2.可以清掉Pool裡的一張圖 3.可以讓其它(特定)物件用id取得圖的內容,id若不存在就傳回NULL [進階功能] 1.可以記錄每張圖被使用的時間點或使用頻率等等資訊,並可以設定Pool的大小,若 發現Pool滿又讀入圖時自動以某些規則(最久遠、使用頻率、特殊設定)挑選可以 被清掉的圖先清掉 2.可以給予一個並未真正讀入的圖id,當其它物件要求的id存在但並未讀入時就主動 去讀進來 這樣你要讓A跟B用同一張圖,只要給他們拿一樣的id就好了。而不用的時候你把 A跟B砍光光也不會發生Memory Leak,因為真正管圖的是ImgPool,只要ImgPool被砍 時會去清光所有它管的圖就好了。 利用這種模式除了管理以外,還有一些靈活的好處。比如說你可以直觀用改Img 中持有的id讓它去取到ImgPool的另一張圖,但其實你也可以讓ImgPool用某一個id在 不同情況下去讀不同的圖。前者用在切換快速且頻繁,所以你預先把每張圖都先讀進 Pool以空間換時間減少讀取的情況,後者則可以用在切換一次後不會很快又再切換, 因此每次都只讀眼前要用的這張圖以精簡id對應的情況。 -- 「如果你還知道牆壁或地板是硬的,就不該老是去用頭撞啊!」 「妳在說什麼,為什麼我會沒事去用頭撞牆撞地板啊!」 「不然,還有什麼理由能解釋你怎麼這麼笨啊!」 --蘭娜.席斯塔 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.167.9.1
1F:推 Transformers:支持! 09/22 20:15
2F:推 DreamYeh:寫真好:> M了 09/22 20:43
3F:推 doomleika:推 09/22 21:27
4F:推 LinaInverse:觀念清楚 09/22 23:57
5F:推 jijuan:感謝 ddavid 詳細的解說 09/23 09:58
6F:推 etrexetrex:推 09/24 19:21
7F:推 hhmmjj:讚~感謝 09/24 19:57







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP