[英]remove all spawned coins
游戲結束后,刪除所有衍生硬幣的最佳方法是什么?
這是產生硬幣的代碼:
screenGroup = self.view
coin = {}
coinspawn = function()
i = display.newSprite( imageSheet1, sequenceData1 )
i.x = display.contentWidth
i.y = math.random(0, display.contentHeight-50)
i:play()
i.collided = true
i.name = "coin"
physics.addBody(i, "dynamic",
{density=.1, bounce=0.1, friction=.2, shape= shape2 ,filter=playerCollisionFilter }
)
--player.gravityScale = 0.5
coinIntro = transition.to(i,{time=2500, x=display.contentWidth - display.contentWidth -500 ,onComplete=jetReady , transition=easing.OutExpo } ) --
coin[#coin+1] = i
end
tmrcoin = timer.performWithDelay( 1000, coinspawn, 0 )
首先,您將從顯示屏中刪除所有硬幣。 然后,您將清除coin
表:
for i=1,#coin do
coin[i]:removeSelf()
end
coin = {} -- forget all coins
假設coin
表是您存儲硬幣的唯一其他地方,那么就可以了。
請注意,在removeSelf
之后,您不能在循環中使用coin[i]=nil
:一旦表上有孔,則#運算符基本上將不可用。 您也不能使用table.remove,因為每次我都會增加,所以您會錯過項目(嘗試,您會看到)。 對同樣存在問題:遍歷表時無法編輯表。 但是,您可以這樣做:
local numCoins = #coin
for i=1,numCoins do
coin[i]:removeSelf()
coin[i]=nil
end
-- now coin is {}
我想到零個項目而不是讓gc用一個table = {}
語句處理它的唯一原因是,如果您對硬幣表有多個引用(我將其重命名為硬幣,BTW,對於明晰)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.