现在应该如何学cocos-lua?急求老司机指点

先说重点:creator退散

以前一直用-js,现在想转lua

以前以为js分为html5和jsb,十分混乱,想说转lua会好点,没想到lua还分-lua和quick……

貌似-lua和quick是合并了可以混用(比如display.newscene等同于cc.Scene:cereate??),可是我应该如何区别这些方法?因为经常百度一个问题,网上能搜到各种不同的代码却很少有人说这到底是lua的还是quick的

(事实上以我从js转lua的情况,我觉得我还是更想学原生lua那套,不想用quick,所以我是想把搜到的跟quick相关的结果排除出去)

好吧,眼前最大的困惑其实有两个:

1、调用函数用点号还是冒号:
lua手册里的区别我看过了,无非就是冒号会隐式传入self当第一个参数。可是cocos的api(http://api.cocos.com/)里我怎么知道这个函数是改用点号还是冒号调用?(比如cc.Scene:create(),我不知道为啥create方法需要传一个self进去……)

再比如,label有一个createWithSystemFont方法,该方法在api里的描述是:

createWithSystemFont ( local text,
local 	font,
local 	fontSize,
local 	dimensions = Size::ZERO,
local 	hAlignment = TextHAlignment::LEFT,
local 	vAlignment = TextVAlignment::TOP 
)		

是我必须先戳到lua源码里去看函数定义时用的是点号还是冒号吗?

2、lua读取studio(好吧我知道官方放弃了studio,但我用的是3.10版本的引擎,依旧还想继续用studio)导出的csb文件之后,如何查找子控件?目前我用的方法是:

`function MyScene:createLayer()
	local _layer=cc.Layer:create()
	local _root=cc.CSLoader:createNode("res/Layer.csb")
	_layer:addChild(_root)
	--local _panel=_root:getChildByName("Button_1");
	--printf(_panel==nil)
	local _btn=ccui.Helper.seekWidgetByName(_root,"Button_1")
	return _layer
end`

这里seekWidgetByName会报错,因为_root是node而不是widget,如何才能将csb读取转成widget?

这个是什么意思?

quick和原生的区别我这里说几点吧

  • 原生的只是导出C++接口
  • quick在原始的基础上封装了lua类文件用于方便开发者。至于是否方便那就仁者见仁智者见智了。quick封装的类是需要配合着改动底层的C++代码的。

现在说一下你的两大问题

  1. 想要访问绑定的类的方法,都用冒号
  2. 我想你想要的应该是tolua.cast()函数,该函数类似于C++的强转

多谢指点(难得被你们翻了牌子)
PS:

这个只是我知道近来creator也支持lua了,怕回复里有人来一句类似:怎么不用creator 这种话……