cocos2d-x基础学习--编写自己的精灵类

前端之家收集整理的这篇文章主要介绍了cocos2d-x基础学习--编写自己的精灵类前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

近来的空余时间比较充分,出于个人的兴趣,来学习一下cocos2d游戏开发。在cocos2d中最基本,也最经常使用的就是精灵类,对于游戏中的不同人物,我们经常使用自己类对精灵进行一个封装,做个简单的笔记,如何封装自己的精灵类。

第一步:重写自己的精灵类继承基类Sprite,实现virtual方法init

1)头文件

  1. #include "cocos2d.h"
  2.  
  3. #ifndef _MY_SPRITE_
  4. #define _MY_SPRITE_
  5.  
  6. class MySprite : public cocos2d::Sprite{
  7. public :
  8. virtual bool init();
  9. static MySprite* create();
  10. //CREATE_FUNC(MySprite);
  11.  
  12. }
  13. #endif // !_MY_SPRITE_

2)init方法
  1. bool MySprite::init(){
  2.  
  3. if(!Sprite::initWithFile("image.png")){
  4. return false;
  5. }
  6. //在这里进行一些精灵类的设置
  7. setScale(0.5f,0.5f);//设置缩放
  8. setRotation(90);//顺时针方向
  9. return true;
  10. }
第二步:实现静态方法create方法,在create方法中创建新的MySprite,并调用init方法,同时将MySprite的生命周期交给程序来控制
  1. MySprite* MySprite::create(){
  2. MySprite * sprite = new MySprite();
  3. if(sprite->init()){
  4. sprite->autorelease();//有程序控制sprite的生命周期,
  5. } else
  6. {
  7. delete sprite;
  8. sprite = NULL;
  9. return NULL;
  10. }
  11. return sprite;
  12. }
如果我们在头文件中声明CREATE_FUNC(MySprite),则表明我们主动实现了父类中没有参数的create方法

第三步:在scene类中添加sprite

  1. auto s = MySprite::create();
  2. s->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2 ));//设置精灵的位置
  3. this->addChild(s);
我们也可以向create和init方法中加入参数来区分自己的精灵类,这时就不能在使用CREATE_FUNC的宏。

猜你在找的Cocos2d-x相关文章