自定义cocos2dx的层与精灵

在上一章中(http://panbook.net/view/181.html),我们学习了一下cocos2dx的helloworld项目,这一章我们来仿照它来自定义我们自己的层和精灵。

1.建立一个自己的cpp文件和头文件

右键点击项目的class文件,选择新建:

在弹出的选择框内选择新建cpp文件:

点击next进入后输入文件名,并且勾选自动创建h文件的选项:

我输入mysence后点击下一步它就会创建头文件和cpp文件:

2.编辑头文件,代码及注释如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//
//MySence.h
//HelloWorld
//
//Createdbypanpanon14/11/30.
//
//
#ifndef__HelloWorld__MySence__//系统自动生成
#define__HelloWorld__MySence__//系统自动生成
#include"cocos2d.h"//我们要引入cocos2d.h文件,这样我们才能找到并使用cocos2dx的函数
class My:cocos2d::Layer{ //声明一个类,名为My,继承了cocos2d的Layer
public : //公有
static cocos2d::Scene*createScene(); //一个静态的创建场景的方法,供APPDelegate调用
virtual bool init(); //一个虚函数,系统会自动调用init方法
CREATE_FUNC(My); //cocos2d定义的一个宏,把我们的类传入,它会自动给我们创建一些初始化需要的东西,包括自动调用init();
};
#endif/*defined(__HelloWorld__MySence__)*/

3.编辑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
//MySence.cpp
#include"MySence.h"//引入头文件
USING_NS_CC; //系统自定义的宏,其功能是要我们引入cocos2dx的空间
Scene*My::createScene(){ //头文件声明的函数
auto scene=Scene::create(); //创建一个场景
layer=My::create(); //创建一个层,因为我们的my继承自layer,所以调用my的创建函数即是创建了layer,这里系统会自动去调用init函数
scene->addChild(layer); //将层添加到场景
return scene; //返回该场景
}
My::init(){ //头文件声明的方法,供类创建时自动调用
if (!Layer::init()){ //调用父类的init,调用失败则返回false
return false ;
}
sprite=Sprite::create( "h0.jpg" ); //创建我们自己的精灵,在创建时传入了图片,该图片在resources下,
this ->addChild(sprite); //将创建好的精灵加入层,即自己
true ; //返回true
}

上面用到一个资源文件,h0.jpg:

4.编辑AppDelegate文件:

将引入改为:

1
2
#include"AppDelegate.h"
#include"MySence.h"

在创建层时调用我们的方法:

//createascene.it'sanautoreleaseobject
scene=My::createScene();

5.编译运行:

我们可以看到,自己的精灵已经创建好了,下一章我们将讲解怎么去对精灵进行放大,缩小,旋转,位置移动。

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...