Cocos2d-x中调用Lua及HelloWorld.lua源码分解
Lua脚本,以前我不知道它有多强大,但是当我做了1年的手机网游之后,起码我发现了,更新客户端是一件很恐怖的事情(会导致大量玩家的流失,以及有一个漫长并且惊心动魄的审核过程),太扯了。于是,如果可以只更新脚本,那就不需要玩家重新下载客户端了,直接在线更新,嗯嗯,虽然我发现了这个,但是还没有实现。噗,代码写烂了,不好改。
所以啊,我已经做好准备了,如果下次用cocos2d-x开发,lua不可少啊~!
看看官方的例子吧,先来AppDelegate.cpp的applicationDidFinishLaunching函数:
#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
是的,就看这一段就好了。就Android加载lua脚本的方式有点奇怪,但是和LuaJava的加载方式很像(我喜欢,噗)。
也就是说,我们要执行某个lua脚本的话,就是用上面这段代码了,不解释,不好解释(难道要我解释源码?噗)。
来,看看helloWorld.lua是怎么写的吧:
复制代码 代码如下: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);
哎哎,lua的语法其实我也不是很熟悉,因为我真的没有用lua开发过。说说我懂的吧,注意几点:
1. 一般变量都要local xx形式,不要习惯了搞个int xx什么的哈
2. lua是没有变量类型这个说法,你想它是什么类型,它就是什么类型,当然,赋值之后它的类型也就确定了
3. 然后,貌似cocos2d-x的lua要使用API的函数好简单啊,比如在cpp应该是
CCLayer::create(),而到了lua这里就CCLayer:create(),是的,注意一个是两个冒号,一个是一个冒号。
4. 使用方法是一个冒号,那使用属性呢?好像是,一个点。
5. 注意了,不管是静态方法,非静态方法,都是用一个冒号,在这里不存在“->”符号
好喇,大家又不是笨蛋,自己看看官方的hello.lua就能发现很多知识了。
您可能感兴趣的文章:
- 剖析iOS开发中Cocos2d-x的内存管理相关操作
- iOS开发中使用cocos2d添加触摸事件的方法
- cocos2dx骨骼动画Armature源码剖析(三)
- cocos2dx骨骼动画Armature源码剖析(二)
- cocos2dx骨骼动画Armature源码剖析(一)
- Cocos2d-x 3.x入门教程(二):Node节点类
- Cocos2d-x 3.x入门教程(一):基础概念
- Cocos2d-x中CCEditBox文本输入框的使用实例
- Cocos2d-x中使用CCScrollView来实现关卡选择实例
- Cocos2d-x中实现弹出对话框示例
- Cocos2d-x触摸事件实例
- Cocos2d-x人物动作类实例
- 详解iOS游戏开发中Cocos2D的坐标位置关系
- 【木头Cocos2d-x 031】Lua篇(第06章):Lua调用C++的函数
- cocos2d-x-2.1beta3-x-2.1.1调用lua带参数全局函数
- cocos2d-x lua c++ 相互调用代码中直接调用注册
- cocos2d-x 3.0 在C++中调用lua函数(2)
- Cocos2d-x3.0下 Lua与C++相互调用
- cocos2d-iphone 调用lua
- Lua中调用 cocos2d-x 的滑动条/滚动条 ScrollView
- 【木头Cocos2d-x 030】Lua篇(第05章):C++调用Lua的函数
- 如何在cocos2d c++代码中调用lua以及探究
- Lua中调用 Cocos2d-x 中的滑动条 ScrollView
- cocos2d-x lua 和c++的相互调用的原理
- 【学习笔记】【Cocos2d-x Lua脚本开发】如何使用Lua脚本调用自定义类
- quick-cocos2d-x中通过LuaProxy调用CCBI
- 【木头Cocos2d-x 031】Lua篇(第06章):Lua调用C++的函数
- quick-cocos2d-x平台Lua源码打包后运行出错的一种情况
- lua脚本调用cocos2d-x 之实现精灵、Tmx地图创建【iOS游戏开发征文】
- 【Cocos2d-x lua篇006】Lua调用C++的函数
- cocos2d-x下c++调用lua函数
- cocos2d-x 3.0 在lua中调用自定义类
- Lua 中调用 cocos2d-x 的24种简单特效