已被cocos-lua逼疯……

--------坑太多,一下仅仅是举个例子-------------------

先说创建一个自定义的Scene:

有各种写法

local MyScene=class("MyScene",function()
	return cc.Scene:create()
end)
local MyScene=class("MyScene",cc.load("mvc").ViewBase)
local MyScene=class("MyScene",function() display.newScene("MyScene") end)

搞不懂哪些是原生的,哪些是quick里面的,也搞不懂“具体”有啥差别(我能感受到有区别,但究竟是啥区别,不明)

再比如切换场景,也有各种写法:

cc.Director:getInstance():replaceScene(MyScene.create());
app:enterScene("MyScene")  

这里切换场景的结果貌似跟创建场景时用的方法有关,比如enterScene可以用“cc.load(“mvc”).ViewBase”创建的场景,但用其他方式创建的就会报错,replaceScene也会在用某些方法创建的场景时也会报错

最最直接的,main.lua里面,进入首场景:
> require("app.MyApp"):create():run()

这里我知道run可以传入一个string,为任意场景的名字,这样就可以把任意场景作为首场景,但貌似用

local MyScene=class("MyScene",function()
	return cc.Scene:create()
end)

创建的场景在这里填名字,运行会报错。而且我也不知道,如果某个场景构造器需要传参,run里怎么处理参数?

O(∩_∩)O哈哈刚开始我也一头雾水,还好有源码。
cc.Scene:create是C++原生导出的Scene
display.newScene是对上述借口的封装(简化),是quick里面加的API貌似

至于local MyScene=class(“MyScene”,cc.load(“mvc”).ViewBase)
这个是其实不是Scene,是MVC框架下的一种封装,具体我也讲不清楚。
和这个对应的是
app:enterScene(“MyScene”)
require(“app.MyApp”):create()
这里还有一个要求,就是这个scene文件必须放在创建项目时自带的这个scene文件所在的目录

而cc.Director:getInstance():replaceScene(MyScene.create());则显然是原生C++借口。

quick对原本C++的借口对lua做了一些封装以简化之。display下的。
又引入了MVC框架(从名字上看出来的),但实际我并没有看出是怎么把模块分开的。
我建议,如果你不喜欢这套框架,或弄不明白用法就干脆不要用。如果你觉得这套框架挺好的,就统一使用框架,尽量不要同时使用框架和原生API。

我只想用原生的api,但是遇到问题去网上搜到的代码千奇百怪用什么的都有,混杂在一起我不太能分得清。

那你只要看lua-tests下的测试例代码就好了

display,mvc都是quick封装的,没觉得哪里方便。我是直接关掉的。其实lua版的lua代码很少(比js),提供了一些lua函数,还有quick封装

原谅我挖坟我也是被坑惨了,完全不知道那种写法才是正确的,网上代码太混乱了,各种版本错综复杂:joy:

当时是上面要求要整合quick lua的,我个人是不太愿意的。现在有机会修改,把这些代码去除怎么样?

呃……呃……

1赞

上面来人了

来人了

早就应该去掉了,上面的当断不断,犹犹豫豫。。

我觉着这些都不太重要 重要的是你 没有看懂 所以才困惑

对不起,我只用c++

去掉吧去掉吧 。

quick的东西没用过

同意上 @张小海 的观点, 没有看懂, 所以才困惑. 如果去看一下实现的细节的话, 会发现这些写法的本质都是一样的.

quick 封装一层也是有道理的, 某些情况下可以隐藏一些版本间接口变动差异. 对于一些有经验的团队, 就算没有 quick 的这层封装, 也做一层自己的封装.

反正现在 quick 团队都已经不存在了, 去掉也无妨. 但是新手同学也可能更加疑惑了, 网上搜到的答案都是 quick api 的, 现在都找不到了.

如果不懂c++,没有从内部了解,或者没用过c++版本开发的人。
直接上lua版本,确实会一头雾水。
cocos2d-x 文档几乎没有,只能看demo和源码来学习

到底去不去啊,我还准备学呢,别没学完的就去了

其实lua完全可以与c++那边的接口一致,没必要再封装让逻辑代码看着这么复杂,赞成干掉quick那堆东西没什么用。

同意干掉,最好再出份文档说明下,希望尽量达到分层,模块化