CXSprite.cpp文件

#include "XSprite.h"

CXSprite::CXSprite(void)
{
    m_strPic.clear();
}

CXSprite::~CXSprite()
{
}
/*********************************
*函数名称:createSprite
*函数功能:创建精灵
*函数参数:const char* psFile--创建精灵用的图片
           int nFrameIndex--(-1--普通图片 0-2--按钮图片帧(按钮统一为3帧))
*函数返回值:创建的精灵指针
*备注:分两种情况来创建
1.第一种:只是简单的通过图片来创建
2.第二种:通过纹理来创建,但是这里要将纹理三等分,
分别是未点击时的,点击时的,点击结束时的
*********************************/
CXSprite* CXSprite::createSprite( const char* psFile, int nFrameIndex /*= -1*/ )
{
    if(NULL == psFile || nFrameIndex < -1 || nFrameIndex >= BTN_FRAME_AMOUNT)
    {
        return NULL;
    }

    CCTexture2D* pTexture = CCTextureCache::sharedTextureCache()->addImage(psFile);
    ASSERT(pTexture);
    if(NULL == pTexture)
    {
        CCLOG("create: %s ---Texture Eroor", psFile);
        return NULL;
    }    

    CXSprite* pSprite = new CXSprite();
    if (NULL != pSprite)
    {
        pSprite->autorelease();
        pSprite->m_strPic = psFile;
        bool bSuc = false;
        if(-1 == nFrameIndex)
        {
            bSuc = pSprite->initWithTexture(pTexture);
        }
        else
        {
            CCRect rect = CCRectZero;
            rect.size = pTexture->getContentSize();
            rect.size.width /= BTN_FRAME_AMOUNT;
            rect.origin.x += nFrameIndex * rect.size.width;
            bSuc = pSprite->initWithTexture(pTexture, rect);
        }
        if(bSuc)
        {
            pSprite->setAnchorPoint(ccp(0, 0));
            return pSprite;
        }
    }
    CC_SAFE_DELETE(pSprite);
    return NULL;
}
/*********************************
*函数名称:create
*函数功能:通过标签创建精灵
*函数参数:const char* psTag--创建精灵用的图片名称
           int nFrameIndex--(-1--普通图片 0-2--按钮图片帧(按钮统一为3帧))
*函数返回值:创建的精灵指针
*备注:
这里是通过CCSpriteFrameCache来创建的
*********************************/
CXSprite* CXSprite::create( const char* psTag, int nFrameIndex /*= -1*/ )
{
    if(NULL == psTag || nFrameIndex < -1 || nFrameIndex >= BTN_FRAME_AMOUNT)
    {
        return NULL;
    }

    if(strlen(psTag) <= 0)
    {
        return NULL;
    }

    CCSpriteFrame* pFrame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(psTag);
    ASSERT(pFrame);
    if(NULL == pFrame)
    {
        CCLOG("CXSprite::create: %s ---SpriteFrame Error", psTag);
        return NULL;
    }


    CXSprite* pSprite = new CXSprite();
    if (NULL != pSprite)
    {    
        pSprite->autorelease();
        pSprite->m_strPic = psTag;
        bool bSuc = false;
        if(-1 == nFrameIndex)
        {
            bSuc = pSprite->initWithSpriteFrame(pFrame);
        }
        else
        {
            CCRect rect = pFrame->getRect();
            rect.size.width /= BTN_FRAME_AMOUNT;
            rect.origin.x += nFrameIndex * rect.size.width;
            bSuc = pSprite->initWithTexture(pFrame->getTexture(), rect);
        }
        if(bSuc)
        {
            pSprite->setAnchorPoint(ccp(0, 0));
            return pSprite;
        }
    }
    CC_SAFE_DELETE(pSprite);
    return NULL;
}
/*********************************
*函数名称:getPicName
*函数功能:获取图片名称
*函数参数:void
*函数返回值:图片名称
*备注:返回的是成员变量
*********************************/
string CXSprite::getPicName()
{
    return m_strPic;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值