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

admin 2018-3-29 188

近来的空余时间比较充分,出于个人的兴趣,来学习一下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.            
  11.     //CREATE_FUNC(MySprite);  
  12.   
  13. }  
  14.        
  15. #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的生命周期交给程序来控制

[java] view plain copy
  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的宏。


最新回复 (0)
返回