显示组在CORONA SDK(LUA)中的使用

我创建了一个本地组并把它放在屏幕上作为一个矩形对象,然后使用了myGroup:removeSelf()和myGroup = nil。那么矩形和其它所有元素的内存都会被自动释放吗?(接下来的代码)

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;

另一个问题是,在createScene函数中如何使用cenarioGrupo,并且它只在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
点赞
用户2376323
用户2376323

在 Corona 中,如果您创建一个显示组并向其中添加显示对象(而不是 Android 的本机小部件),当您尝试删除显示组时,它的所有子项和包含物也将被清除。

对于您的第二个问题: 您可以使用 sceneGroup 作为 criarCenario 的一个入口,如下所示:

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

然后在您的函数中将显示组插入到 sceneGroup 中:

local function criarCenario(sceneGroup) -- 使用一个入口
    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) -- 这是主要的更改
end

您也可以通过返回 cenarioGrupo 并在 createScene 中将其插入 sceneGroup 来实现:

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 更分离。

2015-05-22 06:02:49