3.16里是 Scene::init() 而书里还有3.10的版本是Layer::init 这里有什么变化了么。 那新版本里的Scene里可不可以创建多个Layer比如游戏Layer,还有个菜单layer是悬浮在游戏layer上。
可以
场景可以直接加菜单,你也可以在场景上加层,然后在层上加菜单
老哥 为什么3.16里是场景初始化里面要先调用 Scene::init() 而书里还有3.10的版本是Layer::init
你看类HelloWorld的基类,两个版本是不是变了,一个是Layer,一个是Scene。
看来你不知道这个init的作用啊,这个是obj-c的特性,初始化(有一个编程习惯,先new一个对象分配内存,然后初始化init,叫“二段构建”),然后引擎就继承过来了,作用是初始化基类的设置,c++其实不用这么做,直接new子类,子类会自动调用父类的构造函数(c++特性嘛)。不过,实际上嘛,c++编程时也用二段构建,因为c++在构造函数里是不能调用virtual函数,有了init,你就可以在init里调用virtual函数了。
所以,作用就是调用基类的初始化函数init,以前是调用Layer的init,现在是调用Scene的init。
1赞
原来如此, 谢谢老哥指点, 版本变动太快了,,我买的书是3.X的,, 所以看的我一脸懵逼