zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    使用GUI工具Portainer.io管控Docker容器
    Pycharm-汉化的方法
    Python-Socketserver实现FTP,文件上传、下载
    Pycharm下载安装,本人亲测100% 破解
    Python-反射机制
    Python-操作XML文件
    Python-时间戳、元组时间的格式、自定义时间格式之间的转换
    Python-String字符串操作
    Python-生成器实现简单的"生产者消费者"模型
    Python- 装饰器
  • 原文地址:https://www.cnblogs.com/newlist/p/3152867.html
Copyright © 2011-2022 走看看