遊戲設計筆記 刪除物件

2021-09-05 19:42:49 字數 1931 閱讀 9653

最近沒有時間寫部落格了,真的希望可以把好的東西記錄下來。

現在把部落格文章都寫成問題的形式,這樣寫起來解決問題能快一些。

背景:為什麼要刪除物件?

刪除是遊戲中不可以缺少的步驟,同樣了解這個過程實際上是記憶體一種消亡的過程,為了釋放記憶體所做的一些操作,那就是物件刪除

問題一:在遊戲結束後,我想把所有的容器的物件都刪除那麼我應該怎樣做?

書上都出現過這些解法:

方案一:寫乙個方法,然後引用這個方法把所有的物件都刪除

package

如何刪除多個物件?

} 問題關鍵是:在容器裡面刪除乙個子物件列表。

,每次刪除乙個物件

1索引就會減少乙個。如果刪除了物件

1,那麼原本物件

2在索引

1的地方,會變成了索引

0,物件

3的索引就會變成了索引1

假設numchildren >0,

那麼就意味了容器還沒有刪除元素,要刪除元素就需要使用迴圈來刪除容器來的所有物件列表

f ( numchildren > 0 )

刪除所有物件

package ascb.util }}

就是利用,刪除索引為0的物件,讓列表下的數不斷地往上移動,直到刪除完整為止。

使用到容器displayobjectcontainer類的乙個方法,removechildat();要呼叫它就需要使用物件引用方法,但是要注意一點:displayobjectcontainer類是不能建立例項化

問題三:我使用了for迴圈複製了很多小球,當小球下落的時候,超過了乙個界限,就刪除這個子物件。該如何去實現看下面**

package

private function timerun(event:timerevent):void

private function run(event:event):void

}private function removemovieclip(obj:movieclip,functionname:function):void}}

這段**乙個很關鍵的地方

private function run(event:event):void

}private function removemovieclip(obj:movieclip,functionname:function):void

通過這個方法,是在類中寫乙個方法自己刪除自身的寫法。要注意到乙個地方,event.enter_frame 事件,如果為每乙個子物件裝上乙個監聽,那麼意思就是每一幀都會產生乙個事件,例如小球下落,每一幀小球都會下落乙個位置,那麼,有100個小球,每乙個小球都意味裝了100個監聽事件,一旦我們不需要這個物件的時候,就要使用到removeeventlistener();這個方法處理,這是設計遊戲中一種好的習慣,不然記憶體一直占用影響cpu使用率,大大降低整體的遊戲效能。

三,遊戲監聽和刪除***組合

遊戲中經常要使用到addeventlistener(event.enter_frame,run);但是使用這個經常有個不好的地方,就是它每一幀都要執行,如果不注意的話,很容易導致一些出錯。removeeventlistener()功能就是刪除了***,如果說刪除了物件,那麼***就等於刪除了,其實監聽還會存在的,為了更好利用資源,需要借助這個removeeventlistener()方法一起來刪除物件的***。

像這種簡單接金幣小遊戲,它需要解決的問題是碰撞金幣後,讓物件自己能夠刪除自己。 

遊戲設計筆記 刪除物件

最近沒有時間寫部落格了,真的希望可以把好的東西記錄下來。現在把部落格文章都寫成問題的形式,這樣寫起來解決問題能快一些。背景 為什麼要刪除物件?刪除是遊戲中不可以缺少的步驟,同樣了解這個過程實際上是記憶體一種消亡的過程,為了釋放記憶體所做的一些操作,那就是物件刪除 問題一 在遊戲結束後,我想把所有的容...

遊戲設計模式 物件導向的設計原則

設計模式可以讓 結構更清晰,更嚴謹。面向的物件的設計原則 1.開閉原則 乙個軟體實體應該對外拓展開放,對內修改關閉。在不被修改的前提下被拓展。例如 在客戶端類中建立加法類,然後又想建立減法類可以一開始就建立運算類,可拓展性和可維護性很強。2.依賴倒轉原則 高層模組不應該依賴於低層模組,它們都應該依賴...

遊戲策劃筆記 目標設計

遊戲策劃筆記 目標設計 1 史詩意義 代入感史詩性質的目標其實是非常關鍵的一項驅動力。完成偉大目標的體驗使人願意付出 時間 金錢 參與其中的代入感甚至能滿足人的無私慾和奉獻欲,畢竟在遊戲裡進行的無私和奉獻是一種小代價換來高體驗 自我感動 的過程,本質還是利己的,利己的事情自然能成為驅動力。長線需求 ...