笨木头  2012-11-09 07:53     Cocos2d-x,Cocos2d-x Lua,Cocos2d-x2.0     阅读(6484)     评论(3)
转载请注明,原文地址: http://www.benmutou.com/archives/24
文章来源:笨木头与游戏开发

HelloLua简单分析

  

笨木头花心贡献,啥?花心?不呢,是用心~ 转载请注明,原文地址:http://www.benmutou.com/archives/24

正文:

Lua脚本,以前我不知道它有多强大,但是当我做了1年的手机网游之后,起码我发现了,更新客户端是一件很恐怖的事情(会导致大量玩家的流失,以及有一个漫长并且惊心动魄的审核过程),太扯了。于是,如果可以只更新脚本,那就不需要玩家重新下载客户端了,直接在线更新,嗯嗯,虽然我发现了这个,但是还没有实现。噗,代码写烂了,不好改。

 

所以啊,我已经做好准备了,如果下次用cocos2d-x开发,lua不可少啊~

 

看看官方的例子吧,先来AppDelegate.cppapplicationDidFinishLaunching函数:

[cce_cpp]#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) CCString* pstrFileContent = CCString::createWithContentsOfFile("helloWorld.lua "); if (pstrFileContent) { pEngine->executeString(pstrFileContent->getCString()); } #else std::string path = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath("helloWorld.lua"); pEngine->addSearchPath(path.substr(0, path.find_last_of("/")).c_str()); pEngine->executeScriptFile(path.c_str()); #endif[/cce_cpp]

是的,就看这一段就好了。就Android加载lua脚本的方式有点奇怪,但是和LuaJava的加载方式很像(我喜欢,噗)。

也就是说,我们要执行某个lua脚本的话,就是用上面这段代码了,不解释,不好解释(难道要我解释源码?噗)。

 

来,看看helloWorld.lua是怎么写的吧:

[cce_cpp]local winSize = CCDirector:sharedDirector():getWinSize()

local function createHelloLayer() local layer = CCLayer:create(); local sprite = CCSprite:create("Default.png"); sprite:setPosition(winSize.width / 2, winSize.height / 2); layer:addChild(sprite); return layer end

local scene = CCScene:create(); scene:addChild(createHelloLayer()); CCDirector:sharedDirector():runWithScene(scene);[/cce_cpp]

哎哎,lua的语法其实我也不是很熟悉,因为我真的没有用lua开发过。说说我懂的吧,注意几点:

1. 一般变量都要local xx形式,不要习惯了搞个int xx什么的哈

2.  lua是没有变量类型这个说法,你想它是什么类型,它就是什么类型,当然,赋值之后它的类型也就确定了

3.  然后,貌似cocos2d-xlua要使用API的函数好简单啊,比如在cpp应该是

CCLayer::create(),而到了lua这里就CCLayer:create(),是的,注意一个是两个冒号,一个是一个冒号。

4. 使用方法是一个冒号,那使用属性呢?好像是,一个点。

5. 注意了,不管是静态方法,非静态方法,都是用一个冒号,在这里不存在“->”符号

 

好喇,大家又不是笨蛋,自己看看官方的hello.lua就能发现很多知识了。

3 条评论
  • qiou 2016-02-20 22:38:30

    非常讨厌lua,因为熟悉了C++的方法去找lua版本对应的函数感觉很烦,调试也麻烦,但找工作都是清一色用lua的,真无奈
    0回复
  • 你爸爸 2015-09-24 21:44:42

    没做过lua项目也能写文章吹b也是6,除了装b没看到任何亮点
    0回复
    • hechang 2015-12-09 18:46:39

      呵呵
      0回复
发表评论
粤ICP备16043700号

本博客基于 BlazorAnt Design Blazor 开发