【Cocos2dX(2.x)_Lua开发之三】

【Cocos2dX(2.x)_Lua开发之三】在Lua中使用自定义精灵(Lua脚本与自创建类之间的访问)及Lua基础讲解

本站文章均为李华明Himi原创,转载务必在明显处注明:(作者新浪微博:@李华明Himi )
转载自【黑米GameDev街区】
原文链接: http://www.himigame.com/lua-game/985.html

          ? 点击订阅 ? 本博客最新动态!及时将最新博文通知您!

                 

分享

本篇做起来比较累,大家请参考最新篇【COCOS2DX-LUA 脚本开发之四】使用tolua++编译pkg,从而创建自定义类让Lua脚本使用

此篇可能会在最新的cocos2dx版本中出现如下问题:


1

2

LUA ERROR: ...24F82-1230-41FE-8A04-C445FB7D1BAB/mtet.app/hello.lua:35:

 error in function ‘addChild‘. argument #2 is ‘MySprite‘; ‘CCNode‘ expected.

最近Himi都没有更新博文了,其实也是犹豫写本cocos2d(x)引擎书籍在做准备,目录的草稿都写好了,目录中包含的大家最感兴趣的cocos2d/x动作编辑器的详细制作流程与源码! 但是遗憾的是Himi还是腾不出时间去写;

放弃去写的另外一个原因就是因为支持我的童鞋门,在7月份就说过要为大家奉上关于cocos2dx-lua的系列教程,但是一直由于时间等问题一再拖到现在,如果Himi真要准备写书估计半年内都基本很难有时间更新博客的,当然也考虑到公司项目,最终放弃; 

顺便说一句,关于Himi9个技术群,不论是cocos2d-iphone、cocos2dx、android还是以后陆续公布的Unity3D群,周期性的Himi和管理员们会定期清理(一切都是为了更多想学习的新童鞋考虑),希望大家进群冒泡,积极讨论。好了,废话就不多说了,从今天开始Himi为童鞋们出cocos2dx-lua的系列开发教程,希望大家还一如既往得支持;3Q 

Himi 当前开发工具等版本如下:

mac: 10.8      xcode:4.4.1       cocos2dx :cocos2d-2.0-rc2-x-2.0.1

本篇介绍两个知识点:  1. Lua基础         2.在lua脚本中使用我们自定义的精灵类

一:lua基础

关于Lua的其实很早前Himi写过一篇关于cocos2dx-Lua 的基础博文了,但是是cocos2dx 1.x版本的,对于不是很熟悉的童鞋,Himi还是建议去看一看,连接:【iOS-cocos2d-X 游戏开发之八】在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途! Himi以后更新的Lua系列都是基于Cocos2dx 2.x版本的了。

二:在lua脚本中使用我们自定义的精灵类

首先创建cocos2dx-lua项目,然后在项目中添加我们的自定义精灵类:这里Himi类名为:HSprite

HSprite.h:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

//

//  HSprite.h

//  cocos2dx_lua_tests_by_Himi

//

//  Created by Himi on 12-8-30.

//

//

#ifndef cocos2dx_lua_tests_by_Himi_HSprite_h

#define cocos2dx_lua_tests_by_Himi_HSprite_h

#include "cocos2d.h"

using namespace cocos2d;

class HSprite : public cocos2d::CCSprite{

public:

    static HSprite* createHSprite(const char* _name);

    void hspriteInit();

};

#endif

HSprite.cpp:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

//

//  HSprite.cpp

//  cocos2dx_lua_tests_by_Himi

//

//  Created by Himi on 12-8-30.

//

//

#import "HSprite.h"

HSprite* HSprite::createHSprite(const char* _name){

    HSprite* sp = new HSprite();

    if(sp && sp->initWithFile(_name)){

        sp->hspriteInit();

        sp->autorelease();

        return sp;

    }

    CC_SAFE_DELETE(sp);

    return NULL;

}

void HSprite::hspriteInit(){

    CCMessageBox("create HSprite success", "Himi_Lua");

}

以上代码不做解释了,很简单,继承CCSprite,添加一个自动释放的创建函数(createHSprite)以及一个自定义初始化函数(hspriteInit)

下面我们打开LuaCocos2d.cpp 类,这个类在项目的 libs/lua/cocos2dx_support目录下,如下图:

然后开始添加我们自定义精灵类,让Lua脚本能认识它;

 步骤分为3步:

 1. 注册我们的自定义类:

在LuaCocos2d.cpp类中搜索“tolua_reg_types”这个函数,然后在其中进行注册:


1

tolua_usertype(tolua_S,"HSprite");

如下图所示:

第二步:声明我们自定义类的函数:

搜索“tolua_Cocos2d_open”这个函数,然后在其中添加如下代码:


1

2

3

4

tolua_cclass(tolua_S, "HSprite", "HSprite", "CCSprite", NULL);

    tolua_beginmodule(tolua_S,"HSprite");

    tolua_function(tolua_S,"createHSprite",tolua_Himi_HSprite_createHSrpite00);

    tolua_endmodule(tolua_S);

如下图:

这里开始解释:

首先定义能让脚本认识的类函数,遵循如下:

a)  tolua_cclass(tolua_S, “HSprite”, “HSprite”, “CCSprite”, NULL);

tolua_cclass声明哪个类函数,第一个状态值默认:tolua_S

后两个参数:是自定义类类名

再往后是继承的父类类名

b)添加参数开始声明:

tolua_beginmodule(tolua_S,”HSprite”);

c)  添加自定类函数:

tolua_function(tolua_S,”createHSprite”,tolua_Himi_HSprite_createHSrpite00);

第一个参数默认,第二个参数自定义类名,第三个:实现脚本与自定义类之间的转换实现函数

注意,这里有多个函数,可以继续写;

d) 结束自定义函数:

tolua_endmodule(tolua_S);

第三步:实现我们的脚本之间转换函数  tolua_Himi_HSprite_createHSrpite00

实现如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

/* method: create of class  HSprite */

#ifndef TOLUA_DISABLE_tolua_Himi_HSprite_createHSrpite00

static int tolua_Himi_HSprite_createHSrpite00(lua_State* tolua_S)

{

#ifndef TOLUA_RELEASE

    tolua_Error tolua_err;

    if (

        !tolua_isusertable(tolua_S,1,"HSprite",0,&tolua_err) ||

        !tolua_isstring(tolua_S,2,0,&tolua_err) ||

        !tolua_isnoobj(tolua_S,3,&tolua_err)

        )

        goto tolua_lerror;

    else

#endif

    {

        const char* pszFileName = ((const char*)  tolua_tostring(tolua_S,2,0));

        {

            HSprite* tolua_ret = (HSprite*)  HSprite::createHSprite(pszFileName);

            int nID = (tolua_ret) ? tolua_ret->m_uID : -1;

            int* pLuaID = (tolua_ret) ? &tolua_ret->m_nLuaID : NULL;

            tolua_pushusertype_ccobject(tolua_S, nID, pLuaID, (void*)tolua_ret,"HSprite");

        }

    }

    return 1;

#ifndef TOLUA_RELEASE

tolua_lerror:

    tolua_error(tolua_S,"#ferror in function ‘create‘.",&tolua_err);

    return 0;

#endif

}

#endif //#ifndef TOLUA_DISABLE

如下图所示:

这里Himi解释下:

童鞋们可以从第 384行的 #endif 把这个实现函数分为两部分来看,

首先是375~384之间的代码:


1

2

3

4

5

6

7

8

9

10

#ifndef TOLUA_RELEASE

    tolua_Error tolua_err;

    if (

        !tolua_isusertable(tolua_S,1,"HSprite",0,&tolua_err) ||

        !tolua_isstring(tolua_S,2,0,&tolua_err) ||

        !tolua_isnoobj(tolua_S,3,&tolua_err)

        )

        goto tolua_lerror;

    else

#endif

这里是对参数类型的判断:

tolua_isusertable  是否为”第三个参数”自定义类型

tolua_isstring  是否为字符串类型

tolua_isnoobj  结束(没有参数的判断)

然后是386~392之间的代码段:


1

2

3

4

5

6

7

const char* pszFileName = ((const char*)  tolua_tostring(tolua_S,2,0));

        {

            HSprite* tolua_ret = (HSprite*)  HSprite::createHSprite(pszFileName);

            int nID = (tolua_ret) ? tolua_ret->m_uID : -1;

            int* pLuaID = (tolua_ret) ? &tolua_ret->m_nLuaID : NULL;

            tolua_pushusertype_ccobject(tolua_S, nID, pLuaID, (void*)tolua_ret,"HSprite");

        }

这里是对脚本代码的解析从而调用的自定义创建的函数

最后我们修改  hello2.lua  脚本中的代码:(创建cocos2dx-lua项目默认Resources下自带的文件)

在脚本最后”– run”下代码修改如下:


1

2

3

4

5

6

-- run

local sceneGame = CCScene:create()

-- sceneGame:addChild(createLayerFram())

-- sceneGame:addChild(createLayerMenu())

sceneGame:addChild(createHimiLayer())

CCDirector:sharedDirector():runWithScene(sceneGame)

这里Himi注视了另个layer的添加,添加了自己的Layer


1

sceneGame:addChild(createHimiLayer())

然后将Himi自定义方法添加在脚本中,代码如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

local function createHimiLayer()

    local layerH = CCLayer:create()

    local _font = CCLabelTTF:create("Himi_(cocos2dx-Lua)教程","Arial",33)

    _font:setPosition(230,280)

    layerH:addChild(_font)

    --创建自定义类型精灵

    local hsprite = HSprite:createHSprite("himi.png")

    hsprite:setPosition(100,100)

    hsprite:setScale(1.5)

    hsprite:setRotation(45)

    layerH:addChild(hsprite)

    return layerH

end

创建自己定义的精灵,然后进行调用缩放,旋转,设置坐标函数。

ok,运行后的接图如下:

本站文章均为李华明Himi原创,转载务必在明显处注明:(作者新浪微博:@李华明Himi )
转载自【黑米GameDev街区】
原文链接: http://www.himigame.com/lua-game/985.html

          ? 点击订阅 ? 本博客最新动态!及时将最新博文通知您!

                 

分享

本篇做起来比较累,大家请参考最新篇【COCOS2DX-LUA 脚本开发之四】使用tolua++编译pkg,从而创建自定义类让Lua脚本使用

此篇可能会在最新的cocos2dx版本中出现如下问题:


1

2

LUA ERROR: ...24F82-1230-41FE-8A04-C445FB7D1BAB/mtet.app/hello.lua:35:

 error in function ‘addChild‘. argument #2 is ‘MySprite‘; ‘CCNode‘ expected.

最近Himi都没有更新博文了,其实也是犹豫写本cocos2d(x)引擎书籍在做准备,目录的草稿都写好了,目录中包含的大家最感兴趣的cocos2d/x动作编辑器的详细制作流程与源码! 但是遗憾的是Himi还是腾不出时间去写;

放弃去写的另外一个原因就是因为支持我的童鞋门,在7月份就说过要为大家奉上关于cocos2dx-lua的系列教程,但是一直由于时间等问题一再拖到现在,如果Himi真要准备写书估计半年内都基本很难有时间更新博客的,当然也考虑到公司项目,最终放弃; 

顺便说一句,关于Himi9个技术群,不论是cocos2d-iphone、cocos2dx、android还是以后陆续公布的Unity3D群,周期性的Himi和管理员们会定期清理(一切都是为了更多想学习的新童鞋考虑),希望大家进群冒泡,积极讨论。好了,废话就不多说了,从今天开始Himi为童鞋们出cocos2dx-lua的系列开发教程,希望大家还一如既往得支持;3Q 

Himi 当前开发工具等版本如下:

mac: 10.8      xcode:4.4.1       cocos2dx :cocos2d-2.0-rc2-x-2.0.1

本篇介绍两个知识点:  1. Lua基础         2.在lua脚本中使用我们自定义的精灵类

一:lua基础

关于Lua的其实很早前Himi写过一篇关于cocos2dx-Lua 的基础博文了,但是是cocos2dx 1.x版本的,对于不是很熟悉的童鞋,Himi还是建议去看一看,连接:【iOS-cocos2d-X 游戏开发之八】在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途! Himi以后更新的Lua系列都是基于Cocos2dx 2.x版本的了。

二:在lua脚本中使用我们自定义的精灵类

首先创建cocos2dx-lua项目,然后在项目中添加我们的自定义精灵类:这里Himi类名为:HSprite

HSprite.h:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

//

//  HSprite.h

//  cocos2dx_lua_tests_by_Himi

//

//  Created by Himi on 12-8-30.

//

//

#ifndef cocos2dx_lua_tests_by_Himi_HSprite_h

#define cocos2dx_lua_tests_by_Himi_HSprite_h

#include "cocos2d.h"

using namespace cocos2d;

class HSprite : public cocos2d::CCSprite{

public:

    static HSprite* createHSprite(const char* _name);

    void hspriteInit();

};

#endif

HSprite.cpp:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

//

//  HSprite.cpp

//  cocos2dx_lua_tests_by_Himi

//

//  Created by Himi on 12-8-30.

//

//

#import "HSprite.h"

HSprite* HSprite::createHSprite(const char* _name){

    HSprite* sp = new HSprite();

    if(sp && sp->initWithFile(_name)){

        sp->hspriteInit();

        sp->autorelease();

        return sp;

    }

    CC_SAFE_DELETE(sp);

    return NULL;

}

void HSprite::hspriteInit(){

    CCMessageBox("create HSprite success", "Himi_Lua");

}

以上代码不做解释了,很简单,继承CCSprite,添加一个自动释放的创建函数(createHSprite)以及一个自定义初始化函数(hspriteInit)

下面我们打开LuaCocos2d.cpp 类,这个类在项目的 libs/lua/cocos2dx_support目录下,如下图:

然后开始添加我们自定义精灵类,让Lua脚本能认识它;

 步骤分为3步:

 1. 注册我们的自定义类:

在LuaCocos2d.cpp类中搜索“tolua_reg_types”这个函数,然后在其中进行注册:


1

tolua_usertype(tolua_S,"HSprite");

如下图所示:

第二步:声明我们自定义类的函数:

搜索“tolua_Cocos2d_open”这个函数,然后在其中添加如下代码:


1

2

3

4

tolua_cclass(tolua_S, "HSprite", "HSprite", "CCSprite", NULL);

    tolua_beginmodule(tolua_S,"HSprite");

    tolua_function(tolua_S,"createHSprite",tolua_Himi_HSprite_createHSrpite00);

    tolua_endmodule(tolua_S);

如下图:

这里开始解释:

首先定义能让脚本认识的类函数,遵循如下:

a)  tolua_cclass(tolua_S, “HSprite”, “HSprite”, “CCSprite”, NULL);

tolua_cclass声明哪个类函数,第一个状态值默认:tolua_S

后两个参数:是自定义类类名

再往后是继承的父类类名

b)添加参数开始声明:

tolua_beginmodule(tolua_S,”HSprite”);

c)  添加自定类函数:

tolua_function(tolua_S,”createHSprite”,tolua_Himi_HSprite_createHSrpite00);

第一个参数默认,第二个参数自定义类名,第三个:实现脚本与自定义类之间的转换实现函数

注意,这里有多个函数,可以继续写;

d) 结束自定义函数:

tolua_endmodule(tolua_S);

第三步:实现我们的脚本之间转换函数  tolua_Himi_HSprite_createHSrpite00

实现如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

/* method: create of class  HSprite */

#ifndef TOLUA_DISABLE_tolua_Himi_HSprite_createHSrpite00

static int tolua_Himi_HSprite_createHSrpite00(lua_State* tolua_S)

{

#ifndef TOLUA_RELEASE

    tolua_Error tolua_err;

    if (

        !tolua_isusertable(tolua_S,1,"HSprite",0,&tolua_err) ||

        !tolua_isstring(tolua_S,2,0,&tolua_err) ||

        !tolua_isnoobj(tolua_S,3,&tolua_err)

        )

        goto tolua_lerror;

    else

#endif

    {

        const char* pszFileName = ((const char*)  tolua_tostring(tolua_S,2,0));

        {

            HSprite* tolua_ret = (HSprite*)  HSprite::createHSprite(pszFileName);

            int nID = (tolua_ret) ? tolua_ret->m_uID : -1;

            int* pLuaID = (tolua_ret) ? &tolua_ret->m_nLuaID : NULL;

            tolua_pushusertype_ccobject(tolua_S, nID, pLuaID, (void*)tolua_ret,"HSprite");

        }

    }

    return 1;

#ifndef TOLUA_RELEASE

tolua_lerror:

    tolua_error(tolua_S,"#ferror in function ‘create‘.",&tolua_err);

    return 0;

#endif

}

#endif //#ifndef TOLUA_DISABLE

如下图所示:

这里Himi解释下:

童鞋们可以从第 384行的 #endif 把这个实现函数分为两部分来看,

首先是375~384之间的代码:


1

2

3

4

5

6

7

8

9

10

#ifndef TOLUA_RELEASE

    tolua_Error tolua_err;

    if (

        !tolua_isusertable(tolua_S,1,"HSprite",0,&tolua_err) ||

        !tolua_isstring(tolua_S,2,0,&tolua_err) ||

        !tolua_isnoobj(tolua_S,3,&tolua_err)

        )

        goto tolua_lerror;

    else

#endif

这里是对参数类型的判断:

tolua_isusertable  是否为”第三个参数”自定义类型

tolua_isstring  是否为字符串类型

tolua_isnoobj  结束(没有参数的判断)

然后是386~392之间的代码段:


1

2

3

4

5

6

7

const char* pszFileName = ((const char*)  tolua_tostring(tolua_S,2,0));

        {

            HSprite* tolua_ret = (HSprite*)  HSprite::createHSprite(pszFileName);

            int nID = (tolua_ret) ? tolua_ret->m_uID : -1;

            int* pLuaID = (tolua_ret) ? &tolua_ret->m_nLuaID : NULL;

            tolua_pushusertype_ccobject(tolua_S, nID, pLuaID, (void*)tolua_ret,"HSprite");

        }

这里是对脚本代码的解析从而调用的自定义创建的函数

最后我们修改  hello2.lua  脚本中的代码:(创建cocos2dx-lua项目默认Resources下自带的文件)

在脚本最后”– run”下代码修改如下:


1

2

3

4

5

6

-- run

local sceneGame = CCScene:create()

-- sceneGame:addChild(createLayerFram())

-- sceneGame:addChild(createLayerMenu())

sceneGame:addChild(createHimiLayer())

CCDirector:sharedDirector():runWithScene(sceneGame)

这里Himi注视了另个layer的添加,添加了自己的Layer


1

sceneGame:addChild(createHimiLayer())

然后将Himi自定义方法添加在脚本中,代码如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

local function createHimiLayer()

    local layerH = CCLayer:create()

    local _font = CCLabelTTF:create("Himi_(cocos2dx-Lua)教程","Arial",33)

    _font:setPosition(230,280)

    layerH:addChild(_font)

    --创建自定义类型精灵

    local hsprite = HSprite:createHSprite("himi.png")

    hsprite:setPosition(100,100)

    hsprite:setScale(1.5)

    hsprite:setRotation(45)

    layerH:addChild(hsprite)

    return layerH

end

创建自己定义的精灵,然后进行调用缩放,旋转,设置坐标函数。

ok,运行后的接图如下:

【Cocos2dX(2.x)_Lua开发之三】

时间: 2024-08-11 12:23:53

【Cocos2dX(2.x)_Lua开发之三】的相关文章

eclipse开发cocos2dx 3.2环境搭建之三: ccp-tests项目编译 (this project is not a CDT project)

cocos2dx还有一些测试项目,3.2版本都在安装目录下的tests文件夹下.其中ccp-tests项目包含非常多的使用示例,初学者可以通过熟悉学习这个项目快速的了解cocos2dx的基础知识. 自己在测试cpp-tests项目时还是遇到了一些东西,这次就总结一下. 进入ccp-tests目录可以看到与之前的测试项目结构是一样的. 刚开始直接用eclipse导入了这个项目("File->New->Other->Android/Android Project from Exis

【COCOS2D-HTML5 开发之三】演示样例项目附源代码及执行的GIF效果图

本站文章均为李华明Himi原创,转载务必在明显处注明:(作者新浪微博:@李华明Himi) 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/cocos2d-html5/1528.html ? 点击订阅 ? 本博客最新动态!及时将最新博文通知您! Cocos2dx html5开发,对于用过2d Or -x的童鞋来说非常easy,Himi这里也没有必要去再跟同学们具体的教学一遍. 所以Himi简单做了一个项目,供给大家參考,源代码下载地址及GIF截图在文章

【COCOS2D-HTML5 开发之三】示例项目附源码及运行的GIF效果图

本站文章均为李华明Himi原创,转载务必在明显处注明:(作者新浪微博:@李华明Himi) 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/cocos2d-html5/1528.html ? 点击订阅 ? 本博客最新动态!及时将最新博文通知您! Cocos2dx html5开发,对于用过2d Or -x的童鞋来说很容易,Himi这里也没有必要去再跟同学们详细的教学一遍. 所以Himi简单做了一个项目,供给大家参考,源码下载地址及GIF截图在文章最后!

Cocos2d-x+3.x游戏开发实战pdf

下载地址:网盘下载 内容简介  · · · · · · <Cocos2d-x 3.x游戏开发实战>是一本介绍Cocos2d-x游戏引擎的实用图书,全面介绍了最新的Cocos2d-x 3.2游戏引擎各方面的知识. <Cocos2d-x 3.x游戏开发实战>从内容层次上可分为四个部分.第一部分介绍了游戏开发的基础知识.游戏引擎概念.Cocos2d-x的下载与安装,以及跨平台开发环境的搭建.第二部分介绍了Cocos2d-x中的核心类.动作.动画.3D特效.文字.字体.菜单.事件处理.UI

14、Cocos2dx 3.0游戏开发找小三之Scene and Layer:一场游戏一场梦

重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30474393 Scene :场景 了解了Director 之后,接下来介绍 Scene 这个与它紧密相关的游戏组件. 通过之前的学习,我们已经了解了场景以及它在流程控制中的地位. 在 Cocos2d-x 中,Scene 定义了一个场景.场景只是层的容器,包含了所有需要显示的游戏元素. 因此相对于其他游戏元素,Scene 并没有提供什么特别的功能,就是一

15、Cocos2dx 3.0游戏开发找小三之Sprite:每个精灵都是上辈子折翼的天使

重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30475395 Sprite Sprite 可以说是游戏中最重要的组成元素: 它描述了游戏中的精灵,是 Node 的一个最重要也最灵活的子类. Sprite 很重要,它代表了游戏中一个最小的可见单位, 同时Sprite 也很灵活,它装载了一个平面纹理,具有丰富的表现力,而且 可以通过多种方式加载. 如果说 Scene 和 Layer 代表了宏观的游戏元素

16、Cocos2dx 3.0游戏开发找小三之Node:父节点、子节点、傻傻分不清楚

重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30476133 Cocos2d-x 采用了场景.层.精灵的层次结构来组织游戏元素, 与此同时,这个层次结构还对应了游戏的渲染层次,因此游戏元素可以组织成树形结构,称作渲染树. Cocos2d-x 把渲染树上的每一个游戏元素抽象为一个节点,即 Node. 一切游戏元素都继承自 Node,因此它们 都具有 Node 所提供的特性. Node 定义了一个可绘制

17、Cocos2dx 3.0游戏开发找小三之内置的常用层:三剑客LayerColor、LayerGradient、Menu

重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30477587 为了方便游戏开发者,Cocos2d-x 内置了 3 种特殊的 Layer: 具体如下所示: LayerColor:一个单纯的实心色块. LayerGradient:一个色块,但可以设置两种颜色的渐变效果. Menu:十分常用的游戏菜单. LayerColor 与 与 LayerGradient 这两个层十分简单,都仅仅包含一个色块. 不同

18、Cocos2dx 3.0游戏开发找小三之cocos2d-x,请问你是怎么调度的咩

重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30478251 Cocos2d 的一大特色就是提供了事件驱动的游戏框架, 引擎会在合适的时候调用事件处理函数,我们只需要在函数中添加对各种游戏事件的处理, 就可以完成一个完整的游戏了. 例如,为了实现游戏的动态变化,Cocos2d 提供了两种定时器事件: 为了响应用户输入,Cocos2d 提供了触摸事件和传感器事件: 此外,Cocos2d 还提供了一系列