自己用 cocos2d-x封裝了個等待的動畫,代碼如下:
#include <iostream>#include "cocos2d.h"#include "cocos-ext.h"USING_NS_CC;USING_NS_CC_EXT;using namespace std;class TTWaitting:public CCLayer{public: TTWaitting(); ~TTWaitting(); bool initWithBgImage(std::string strImageName); void startAnimation(); void stopAnimation(); static TTWaitting * createWithBgImage(std::string strImageName); public: CCSprite * m_bgSprite;};
#include "TTWaitting.h"TTWaitting::TTWaitting(){ }TTWaitting::~TTWaitting(){ } bool TTWaitting::initWithBgImage(std::string strImageName){ if (strImageName.empty() ) { return false; } m_bgSprite = CCSprite::create(strImageName.c_str()); m_bgSprite->setPosition(ccp( m_bgSprite->getContentSize().width * 0.5f, m_bgSprite->getContentSize().height * 0.5f )); this->addChild(m_bgSprite); //設定contentSize this->setContentSize(m_bgSprite->getContentSize()); //將錨點設定回0.5,0.5 this->setAnchorPoint(ccp(0.5f,0.5f)); return true;}void TTWaitting::startAnimation(){ if (m_bgSprite) { m_bgSprite->stopAllActions(); CCRotateBy * rotateAct = CCRotateBy::create(2.5f, 360); CCRepeatForever * rotateRep = CCRepeatForever::create(rotateAct); m_bgSprite->runAction(rotateRep); }}void TTWaitting::stopAnimation(){ if (m_bgSprite) { m_bgSprite->stopAllActions(); }}TTWaitting * TTWaitting::createWithBgImage(std::string strImageName){ if (strImageName.empty() ) { return NULL; } TTWaitting * pRet = new TTWaitting(); if (pRet != NULL && pRet->initWithBgImage(strImageName)) { pRet->autorelease(); } else { delete pRet; pRet = NULL; } return pRet;}
使用例子如下:
//顯示 正在重新整理的背景 if (m_waitingCtrl == NULL) { m_waitingCtrl = TTWaitting::createWithBgImage("loading.png"); m_waitingCtrl->setPosition(ccp( m_originPoint.x + 320/2 - m_waitingCtrl->getContentSize().width * 0.5f, this->getContentSize().height * 0.5f - m_waitingCtrl->getContentSize().height * 0.5f )); this->addChild(m_waitingCtrl, 1); } else { m_waitingCtrl->setVisible(true); } m_waitingCtrl->startAnimation();
//停止 動畫,隱藏提示 if (m_waitingCtrl) { m_waitingCtrl->stopAnimation(); m_waitingCtrl->setVisible(false); }