cocos2dx 3.4 新手解析 mvc入口

cocos2dx 3.4 demo 接口分析
入口在main.lua 这里不多说
在main 函数里面能找到这么一段代码:

require("app.MyApp"):create():run()
```

这里解释一下(之前是用的cocos2dx 2.2.3 和lua ,也是第一次接触mvc的模式,这里就多啰嗦几句)
上面那段代码其实可以拆解为:
local app = require("app.MyApp"):create()--返回的是一个继承AppBase的类
app:run() 
```
看的不爽的可以自己去修改 在MyApp的类中
请参考:http://www.cocos2dev.com/?p=535

这里调用了 该类里面的 create方法 这时候很多人就会问  『我没有在MyApp里面找到create方法啊』(看的当时我就郁闷了)
经过不懈的努力终于让我找到了问题的所在
我们看看在创建一个类的时候,框架帮我们做了什么直接上代码
目录在cocos-》cocos2d -》 functions.lua ps.这个再找不到我就救不了你了!
找到文件后来看里面的 class函数 
在里面可以发现有这么一段代码
cls.create = function(_, ...)
    return cls.new(...)
end
```


到这你应该就明白了把  ,这里自动加上了 create 函数 所以说create函数是有的(只是被蒙在鼓里了)

废话不多说  接着来看 create 函数里面 调用了 cls.new(...)
那么cls.new(...)里面又做了什么呢
cls.new = function(...)
    local instance
    if cls.__create then
        instance = cls.__create(...)
    else
        instance = {}
    end
    setmetatableindex(instance, cls)
    instance.class = cls
    --这里调用了ctor函数了 每次创建一个类都会自动调用ctor函数,一般在这里做一些初始化的事情,和夹在资源什么的(看了很多帖子,说不推荐在这里加载资源)
    instance:ctor(...)
    return instance
end
```


这也就解决了ctor自动调用的问题了,只要在新增的类中写该类的ctor()函数,在加载类的时候就能自动运行该函数
回到最初的问题,以上create()这一步算是讲完了,再看看run()里面做了什么事情

进入到AppBase类中 目录在 packages ->mvc -> AppBase.lua
实际上这里做的就是创建最开始的场景 demo里是MainScene

function AppBase:run(initSceneName)
    initSceneName = initSceneName or self.configs_.defaultSceneName
    print("入口名:"..initSceneName)
    --默认是进入MainScene场景 这里就不做深入讲解了,绕了一大圈 其实就为了创建一个场景
    self:enterScene(initSceneName)
end
```

如果入口界面可以再AppBase:ctor()中进行修改MainScene
    self.configs_ = {
        viewsRoot  = "app.views",
        modelsRoot = "app.models",
        defaultSceneName = "MainScene", --修改这里的名字
    }
```

建议像我一样的新手多看看框架里面的代码,只要能够专研,定会有收获的!
第一次写这样的东西,又不对的地方还请各位大虾能够指点!我也将继续努力!!

一说解析这个mvc入口我就很有气,目前cocos code ide居然连f3跳转到函数定义位置都做不到

恩 ide目前还没有来得及研究,只知道是继承基于eclipse !现在cocos2dx 3.4 mvc的教程太少了,所以自己写了一些简单的理解!

写的很好,我也是新手,赞一个

直接学习 quick 3.3 mvc 状态机 什么的 资料有好多呢