2012-12-12 37 views
0

非常快速,也許很容易的問題......但它留下了我最後30分鐘難倒......但是我怎樣才能從畫布/屏幕上移除物品?移除物品lua/Corona

我知道這工作與removeSelf(),但我不太清楚如何使用,在我的例子:

display.setStatusBar(display.HiddenStatusBar) 

function cat1() 
    displayCategory(1) 

    print("clicked 1") 
end 

function cat2() 
    displayCategory(2) 

    print("clicked 2") 
end 

function cat3() 
    displayCategory(3) 

    print("clicked 3") 
end 

--category display 
function displayCategory(cat) 

    if (cat == nil) then 
     cat = 1 
    end 

    print(cat) 

    if (cat == 1) then 
     local item1 = display.newRect(100,100,100,100) 
     item1:setFillColor(255,255,0) 
    elseif (cat == 2) then 
     local item2 = display.newRect(200,100,100,100) 
     item2:setFillColor(255,0,255) 
    elseif (cat == 3) then 
     local item3 = display.newRect(300,100,100,100) 
     item3:setFillColor(0,255,255) 
    end 

end 

--category buttons 
local catBtn1 = display.newRect(0,0,50,50) 
catBtn1:setFillColor(255,0,0) 
catBtn1:addEventListener("tap", cat1) 

local catBtn2 = display.newRect(60,0,50,50) 
catBtn2:setFillColor(0,255,0) 
catBtn2:addEventListener("tap", cat2) 

local catBtn3 = display.newRect(120,0,50,50) 
catBtn3:setFillColor(0,0,255) 
catBtn3:addEventListener("tap", cat3) 

現在,我點擊我的按鈕的每一次,相應的項目彈出,但當我點擊任何其他按鈕時不會消失。我會怎麼做呢?

回答

1

首先,在displayCategory函數之前開始創建那些itens。 然後你將它們設置爲不可見的,就像這樣:

local item1 = display.newRect(100,100,100,100) 
item1:setFillColor(255,255,0) 
item1.isVisible = false 

後來你設置正確的itens可見或不適當,第2項的情況下,將

item1.isVisible = false 
item2.isVisible = true 
item3.isVisible = false 
+0

Oooooooooh不意識到lua/Corona支持isVisible參數...非常整潔!這將如何影響內存,但是當它們被設置爲不可見時,這些圖片(以後的圖片將被圖像替換)仍然會被加載? – Cleverbird

+0

是的,但是除非你真的需要記憶回來,否則裝載和卸載東西(尤其是垃圾收集器的存在)是個壞主意。 – speeder

+0

我認爲這不會是一個大問題,但良好的內存管理將會很不錯...尤其是考慮到移動設備有點低。我會問你是什麼意思的垃圾收集器,但我不想脫軌這個線程太多。感謝您的解決方案! – Cleverbird