2015-05-22 2 views
0

Я создал локальную группу и вставлял в нее объекты на экране в виде прямоугольника, а затем использовал myGroup: removeSelf() и myGroup = nil. Автоматическая память для прямоугольника и всех других элементов также будет опустошена? (следующий код)displayGroups в CORONA SDK (LUA)

cenarioGrupo = display.newGroup() 

local chao = display.newRect(display.contentWidth*0.5, display.contentHeight*0.95, display.contentWidth, display.contentHeight*0.1)[ 

cenarioGrupo:insert(chao) 

--Then.. 
cenarioGrupo:removeSelf(); cenarioGrupo = nil; 

и другие вопросы. Как я могу использовать cenarioGrupo в функции createScene, и он создается только в функции criarCenario? Вернуть его? Создать его в целом?

local function criarCenario() 
    cenarioGrupo = display.newGroup() 

    local chao = display.newRect(display.contentWidth*0.5, display.contentHeight*0.95, display.contentWidth, display.contentHeight*0.1) 
    chao:setFillColor(1,1,1) 

    cenarioGrupo:insert(chao) 
end 


function scene:createScene(event) 
     local sceneGroup = self.view 
     criarCenario() 
end 

ответ

0

в Corona, если вы создаете группу отображения и добавлять объекты отображения (не родной виджет Android) к нему, когда вы попытаетесь удалить группу показать все это дети и контейнменты будут стерты, тоже.

на ваш второй вопрос: вы можете использовать sceneGroup как запись для вашего criarCenario, как это:

function scene:createScene(event) 
    local sceneGroup = self.view 
    criarCenario(sceneGroup) 
end 

, а затем в вашей функции просто вставить группу дисплея sceneGroup:

local function criarCenario(sceneGroup) -- use an entry 
    cenarioGrupo = display.newGroup() 


local chao = display.newRect(display.contentWidth*0.5, display.contentHeight*0.95, display.contentWidth, display.contentHeight*0.1) 


chao:setFillColor(1,1,1) 
cenarioGrupo:insert(chao) 
sceneGroup:insert(cenarioGrupo) -- here is the main change 
end 

, вы также можете сделать это, вернув свой cenarioGrupo и вставьте его в sceneGroup в createScene:

local function criarCenario() 
    cenarioGrupo = display.newGroup() 
    local chao = display.newRect(display.contentWidth*0.5, display.contentHeight*0.95, display.contentWidth, display.contentHeight*0.1) 
    chao:setFillColor(1,1,1) 

    cenarioGrupo:insert(chao) 
    return cenarioGrupo 
end 

function scene:createScene(event) 
     local sceneGroup = self.view 
     sceneGroup:insert(criarCenario()) 
end 

Я сам предпочитаю второй метод, потому что он обеспечивает вам более свободную связь. ваша функция criarCenario больше отделена от createScene во втором методе.