最近沒有時間寫部落格了,真的希望可以把好的東西記錄下來。
現在把部落格文章都寫成問題的形式,這樣寫起來解決問題能快一些。
背景:為什麼要刪除物件?
刪除是遊戲中不可以缺少的步驟,同樣了解這個過程實際上是記憶體一種消亡的過程,為了釋放記憶體所做的一些操作,那就是物件刪除
問題一:在遊戲結束後,我想把所有的容器的物件都刪除那麼我應該怎樣做?
書上都出現過這些解法:
方案一:寫乙個方法,然後引用這個方法把所有的物件都刪除
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 史詩意義 代入感史詩性質的目標其實是非常關鍵的一項驅動力。完成偉大目標的體驗使人願意付出 時間 金錢 參與其中的代入感甚至能滿足人的無私慾和奉獻欲,畢竟在遊戲裡進行的無私和奉獻是一種小代價換來高體驗 自我感動 的過程,本質還是利己的,利己的事情自然能成為驅動力。長線需求 ...