您的位置:首页 > 移动开发 > Cocos引擎

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

2014-12-15 19:40 260 查看
        近来的空余时间比较充分,出于个人的兴趣,来学习一下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();

//CREATE_FUNC(MySprite);

}

#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();//有程序控制sprite的生命周期,
    } 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的宏。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cocos2d-x 游戏开发
相关文章推荐