PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
GameDesign
Re: [請益] 關於 Corona SDK 裡的"parent"的問題
作者:
chowleft
(什麼....)
2016-01-17 17:19:53
: http://imgur.com/9GVoOTS
: 這張是比較詳細的範例
: 請問一下myLine.parent:remove(myLine)這邊
: 為什麼不直接用myLine:removeSelf()刪掉就好了,
: 搞不太懂裡面的"parent"這段,這"雙親"到底有什麼功用?是什麼意思?且要怎麼使用?
: 還有為什麼要再一開始就把myLine設成nil?? 想破腦袋都想不出到底是為什麼啊??
: 請神人幫忙解惑啊!謝謝~~?
我不是神人也完全不會 Corona,
所以可能有錯就等其他人補完
parent 應該是找該物件所屬的 DisplayGroup,
每個 DisplayObject 都有一個 Group,
可以在生成時決定,也可以之後再指定。
像 display.newLine 函式就有一個參數去指定物件的 Group,
這個參數是 optional 所以可以不填,
如果不指定就是掛在 display.currentGroup 底下。
DisplayGroup 在 Corona 就只是用來
將多個相同性質的物件以群組及階層式方式管理。
例如可以指定不同 group 的顯示順序,
像是將背景和前景各一個 group,
然後設定背景 group 先畫,讓背景在前景後面。
此外還有其他重要的功能,可參考 Corona 的教學:
https://docs.coronalabs.com/guide/graphics/group.html
DisplayGroup 的概念很簡單卻非常重要,
我想你的書裡應該也有提到這個部分。
移除畫面物件的方式有以下幾種,這三種看起來是沒啥差別:
display.remove(object)
myGroup.remove(object) //< displayGroup
object.removeself()
不過 display.remove 還會多檢查物件不是 nil 才執行動作,即等同
if obj ~= nil then
obj:removeSelf()
end
所以 262 ~ 264 行的程式,直接寫成下面那行應該也會通。
display.remove(myLine);
關於 display.remove 可以參考以下連結:
https://docs.coronalabs.com/api/library/display/remove.html
用上面方式移除物件後,
其實還是會留一些基本的屬性資料在上面,
如果確認物件的生命週期已完全結束,以後也不會再用到,
remove 後需再將值設為 nil 才能將物件完全釋放:
obj:removeSelf()
obj = nil
不然可能會變成 memory leak ....
你就想成某些記憶體沒辦法釋放越積越多這樣
更多資訊可參考以下連結:
https://docs.coronalabs.com/guide/media/displayObjects/index.html#remove
不過書裡 259 行的 nil 和 260 行不同縮排,
感覺跟你說的 "一開始" 沒有任何關聯
if ...
// 處理別的事情
....
myLine = nil;
elseif ...
// 處理按球開始拖曳
....
end
看起來是這樣?
作者:
damody
(天亮damody)
2016-01-17 21:59:00
lua 蠻熟的 啊哈
作者:
r50o19
(打開推進器)
2016-01-18 22:43:00
咦~對耶 原來是前一個if裡面的東西啊 XDD 難怪怎麼看怎麼
http://imgur.com/mJVaR01
繼續閱讀
[請益] 關於 Corona SDK 裡的"parent"的問題
r50o19
[請益] 有關Axis Game Factory軟體
w60241
[情報] VR實作工作坊-台北站 2016/1/20
laikyo
Fw: [情報] pixelstarship 像素星艦
santaclub
[請益] unity購買,但維護只到2017.03?
richman88
[請益] 想請問這影片中的是3D的嗎?
awwwe
[請益]UI局部放大的功能
BF109Pilot
[請益] unity物件會互相穿透
leo88138
[遊戲] 自製遊戲---1
zzire
[遊戲] Unreal Engine 4/UE4 美術功能&總結
akilight
Links
booklink
Contact Us: admin [ a t ] ucptt.com