2012-12-12 11 views
0

매우 빠르고 쉽게 질문 할 수 있지만 지난 30 분 동안 저를 곤혹스럽게 만들었지 만 캔버스/화면에서 항목을 제거하려면 어떻게해야합니까?항목 제거 루어/코로나

내가이 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 

나중에 당신이

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

Oooooooooh 아니었다 될 항목 2의 경우, 눈에 보이는 여부를 적절에 대해 적절한 itens를 설정 루아/코로나가 isVisible 매개 변수를 지원한다는 것을 알고 ... 아주 깔끔하게! 어떻게 메모리에 영향을 미칠까요? 보이지 않게 설정되었을 때 사진이로드되고 (사각형이 나중에 이미지로 바뀝니다) 계속로드됩니까? – Cleverbird

+0

예, 가비지 수집기가있는 물건을로드 및 언로드하는 것은 메모리를 정말로 필요로하지 않는 한 나쁜 생각입니다. – speeder

+0

큰 문제는 아니 겠지만 좋은 메모리 관리는 좋을 것 같습니다 ... 특히 모바일 장치를 고려할 때 조금 더 낮습니다. Garbage Collector가 무슨 뜻인지 물어볼 것이지만,이 스레드를 너무 많이 벗어나고 싶지는 않을 것입니다. 솔루션을 가져 주셔서 감사합니다! – Cleverbird