程式碼如下:
NumCount = 1
function MeTouch(e)
if e.phase == "ended" then
if NumCount > 5 then
NumCount = 1
end
if PngGroup then
PngGroup:removeSelf()
PngGroup = nil
end
for i = 1,NumCount do
PngGroup = display.newImage("apple.png")
if i > 3 then
PngGroup.x = centerX + (50 * i/3)
PngGroup.y = 70 + (50 * (i/3))
else
PngGroup.x = centerX + (50 * i)
PngGroup.y = 70;
end
end
NumCount = NumCount +1
end
end
Runtime:addEventListener( "touch", MeTouch )
每Touch一次就會刪除原來的圖片,再載入新的圖片,但是一次Touch的事件中可能會載入多張的圖片,
例如變數NumCount=2,片段程式如下:
for i = 1,NumCount do
PngGroup = display.newImage("apple.png")
測試的結果載入2張的圖片是沒有問題的,但是在刪除圖片時卻只會刪除最後一張,片段程式如下:
PngGroup:removeSelf()
PngGroup = nil
換句話說,雖然圖片的物件名稱都是PngGroup,但是實際上還是不一樣的2個物件,所以無法以PngGroup這個名稱來刪除多個物件
解決的方法是將PngGroup寫到Table內,例如:
local tmpTable = {} --產生一個Table
for i = 1,NumCount do
PngGroup = display.newImage("apple.png")
table.insert(tmpTable,PngGroup) --將物件新增到Table
end
要刪除全部的PngGroup物件時,只要將Table內的物件,一個一個刪除就可以了。
for i = #tmpTable, 1, -1 do
local child = table.remove(tmpTable, i) -- Remove from table
if child ~= nil then
child:removeSelf()
child = nil
end
end