Cocos2dx学习笔记(2)——精灵的创建

来源:互联网 发布:宁波大数据管理局 编辑:程序博客网 时间:2024/04/30 20:22

MyLayer.h

class MyLayer: public CCLayer{public:    CREATE_FUNC(MyLayer);    //static MyLayer *create();    static CCScene *scene();    bool init();};

    非常简单的一个层,和上一章所讲的HelloWorldScene是一样的。由于是之前写的代码,所以就带上了CC的前缀,在这里就不做赘述。

MyLayer.cpp

bool MyLayer::init(){    if (!CCLayer::init())  //如果父类初始化失败,返回false    {        return false;    }    //父类初始化成功    //获取屏幕尺寸    CCSize winSize = CCDirector::sharedDirector()->getWinSize();    //创建精灵    CCSprite *spr = CCSprite::create("bg.png");    spr->setPosition(ccp(winSize.width / 2, winSize.height / 2));    addChild(spr);    return true;}

    这里的init()比之上一章要丰富许多。判断父类初始化不用多说,至于winSize是用于存储窗口的大小。这里可以通过Director的单例来获取窗口大小,即Director::getInstance()->getWinSize()。接下来便是创建精灵,上一章讲过,除了可以添加CocosStudio中生成的csb文件,一般来说都是通过创建精灵来加入图片等元素。我们创建一个指向精灵的指针,并用“bg.png”来初始化精灵。这里要注意的是,文件的初始路径指定为工程文件下的Resources文件夹。如果还有更深一层的目录,用“/”来隔开。
    初始化了精灵,我们可以使用setPostion方法来设定精灵位置。所谓的ccp是一个宏,用于坐标的参数设定,包含长和宽两个参数(也就是x和y)。这里我们利用事先获得的winSize将精灵位置设置为窗口正中央。另外,别忘记将精灵加入层。由于是层的init()方法,直接使用addChild()即可。

CCScene *MyLayer::scene(){    CCScene *scene = CCScene::create();    MyLayer *layer = MyLayer::create();    scene->addChild(layer);    return scene;}

    至于scene()方法的实现与上一章所讲的createScene()是一样的,同样不多费口舌。
    精灵的创建方法有很多,这里的Sprite::create()自然是最简单的一种,下面介绍几种方法:

static CCSprite *create(const char *pszFileName);static CCSprite *create(const char *pszFileName, const CCRect &rect);bool initWithFile(const char *pszFileName);bool initWithFile(const char *pszFileName, const CCRect &rect);

    前两种是静态工厂方法,后两种是精灵的初始化方法。另外,rect代表的是精灵显示纹理,至于什么是纹理,以后在单独总结。

0 0
原创粉丝点击