关于生命周期的问题

源代码如下:


local MainScene = class("MainScene", cc.load("mvc").ViewBase)

local SceneMap = require("app.views.SceneMap"):create()  

MainScene.RESOURCE_FILENAME = "MainScene.csb"


function MainScene:onCreate()   
      
   --添加进入按钮的事件。
    local function onEnterSceneMap()

        SceneMap:showWithScene()

   end
   
   local buttonEnter = self:getResourceNode():getChildByName("ButtonEnter")
    buttonEnter:addClickEventListener(onEnterSceneMap)
end

return MainScene

狠简单,点击按钮之后进入SceneMap场景,但是在实际中却出错了,提示找不到showWithScene这个方法。

找了很久,貌似是生命周期导致的问题,如果改成下面这样,就改变了创建的位置就可以了。


local MainScene = class("MainScene", cc.load("mvc").ViewBase)

MainScene.RESOURCE_FILENAME = "MainScene.csb"

local testFlag = "test flag"

function MainScene:onCreate()   
      
   --添加进入按钮的事件。
    local function onEnterSceneMap()
        local SceneMap = require("app.views.SceneMap"):create()  
        SceneMap:showWithScene()
        print(testFlag) --可以打印出 test flag
   end
   
   local buttonEnter = self:getResourceNode():getChildByName("ButtonEnter")
    buttonEnter:addClickEventListener(onEnterSceneMap)
end

return MainScene

或者这样也可以


local MainScene = class("MainScene", cc.load("mvc").ViewBase)
local SceneMap = require("app.views.SceneMap")

MainScene.RESOURCE_FILENAME = "MainScene.csb"

local testFlag = "test flag111"

function MainScene:onCreate()   
      
   --添加进入按钮的事件。
    local function onEnterSceneMap()
        SceneMap:create():showWithScene() --create放到这里也可以。
        print(testFlag) --可以打印出 test flag
   end
   
   local buttonEnter = self:getResourceNode():getChildByName("ButtonEnter")
    buttonEnter:addClickEventListener(onEnterSceneMap)
end

return MainScene

不是很理解,求教。