近来的空余时间比较充分,出于个人的兴趣,来学习一下cocos2d游戏开发。在cocos2d中最基本,也最经常使用的就是精灵类,对于游戏中的不同人物,我们经常使用自己类对精灵进行一个封装,做个简单的笔记,如何封装自己的精灵类。
第一步:重写自己的精灵类继承基类Sprite,实现virtual方法init
1)头文件:
- #include "cocos2d.h"
-
- #ifndef _MY_SPRITE_
- #define _MY_SPRITE_
-
- class MySprite : public cocos2d::Sprite{
- public :
- virtual bool init();
- static MySprite* create();
-
-
-
- }
-
- #endif // !_MY_SPRITE_
2)init方法
- bool MySprite::init(){
-
- if(!Sprite::initWithFile("image.png")){
- return false;
- }
-
- setScale(0.5f, 0.5f);
- setRotation(90);
- return true;
- }
第二步:实现静态方法create方法,在create方法中创建新的MySprite,并调用init方法,同时将MySprite的生命周期交给程序来控制
- MySprite* MySprite::create(){
- MySprite * sprite = new MySprite();
- if(sprite->init()){
- sprite->autorelease();
- } else
- {
- delete sprite;
- sprite = NULL;
- return NULL;
- }
- return sprite;
- }
如果我们在头文件中声明CREATE_FUNC(MySprite),则表明我们主动实现了父类中没有参数的create方法
第三步:在scene类中添加sprite
- auto s = MySprite::create();
- s->setPosition(Vec2(visibleSize.width/2 , visibleSize.height/2 ));
- this->addChild(s);
我们也可以向create和init方法中加入参数来区分自己的精灵类,这时就不能在使用CREATE_FUNC的宏。