zoukankan      html  css  js  c++  java
  • cocos2dx素材实现预先加载

    #ifndef _TEXTURECACHE_TEST_H_
    
    #define _TEXTURECACHE_TEST_H_
    
     
    
    #include "cocos2d.h"
    
    #include "../testBasic.h"
    
    #include "platform/platform.h"
    
     
    
    class TextureCacheTest : public CCLayer
    
    {
    
    public:
    
        TextureCacheTest();
    
        void addSprite();
    
        void loadingCallBack(cocos2d::CCObject *obj);
    
     
    
    private:
    
        cocos2d::CCLabelTTF *m_pLabelLoading;
    
        cocos2d::CCLabelTTF *m_pLabelPercent;
    
        int m_nNumberOfSprites;
    
        int m_nNumberOfLoadedSprites;
    
    };
    
     
    
    class TextureCacheTestScene : public TestScene
    
    {
    
    public:
    
        virtual void runThisTest();
    
    };
    
     
    
    #endif // _TEXTURECACHE_TEST_H_
    
     
    cpp文件
     
    // enable log
    
    #define COCOS2D_DEBUG 1
    
     
    
    #include "TextureCacheTest.h"
    
     
    
    USING_NS_CC;
    
     
    
    TextureCacheTest::TextureCacheTest()
    
    : m_nNumberOfSprites(20)
    
    , m_nNumberOfLoadedSprites(0)
    
    {
    
        CCSize size = CCDirector::sharedDirector()->getWinSize();
    
     
    
        m_pLabelLoading = CCLabelTTF::create("loading...","Arial", 15);
    
        m_pLabelPercent = CCLabelTTF::create("%0", "Arial", 15);
    
     
    
        m_pLabelLoading->setPosition(ccp(size.width / 2, size.height / 2 - 20));
    
        m_pLabelPercent->setPosition(ccp(size.width / 2, size.height / 2 + 20));
    
     
    
        this->addChild(m_pLabelLoading);
    
        this->addChild(m_pLabelPercent);
    
     
    
        // load textrues
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/HelloWorld.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        //callfuncO_selector设置回调方法 设置加载百分比
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_01.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_02.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_03.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_04.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_05.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_06.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_07.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_08.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_09.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_10.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_11.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_12.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_13.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_14.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/background1.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/background2.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/background3.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
        CCTextureCache::sharedTextureCache()->addImageAsync("Images/blocks.png", this,callfuncO_selector(TextureCacheTest::loadingCallBack));
    
    }
    
     
    
    void TextureCacheTest::loadingCallBack(CCObject *obj)
    
    {
    
        ++m_nNumberOfLoadedSprites;
    
        char tmp[10];
    
        sprintf(tmp,"%%%d", (int)(((float)m_nNumberOfLoadedSprites/ m_nNumberOfSprites) * 100));//设置加载百分比
    
        m_pLabelPercent->setString(tmp);
    
     
    
        if (m_nNumberOfLoadedSprites == m_nNumberOfSprites)
    
        {//加载全部完成后 去添加CCSprite
    
            this->removeChild(m_pLabelLoading, true);
    
            this->removeChild(m_pLabelPercent, true);
    
            addSprite();
    
        }
    
    }
    
     
    
    void TextureCacheTest::addSprite()
    
    {
    
        CCSize size = CCDirector::sharedDirector()->getWinSize();
    
     
    
        // create sprites
    
     
    
        CCSprite *bg = CCSprite::create("Images/HelloWorld.png");
    
        bg->setPosition(ccp(size.width / 2, size.height / 2));
    
     
    
        CCSprite *s1 = CCSprite::create("Images/grossini.png");
    
        CCSprite *s2 =CCSprite::create("Images/grossini_dance_01.png");
    
        CCSprite *s3 =CCSprite::create("Images/grossini_dance_02.png");
    
        CCSprite *s4 =CCSprite::create("Images/grossini_dance_03.png");
    
        CCSprite *s5 =CCSprite::create("Images/grossini_dance_04.png");
    
        CCSprite *s6 =CCSprite::create("Images/grossini_dance_05.png");
    
        CCSprite *s7 =CCSprite::create("Images/grossini_dance_06.png");
    
        CCSprite *s8 =CCSprite::create("Images/grossini_dance_07.png");
    
        CCSprite *s9 =CCSprite::create("Images/grossini_dance_08.png");
    
        CCSprite *s10 =CCSprite::create("Images/grossini_dance_09.png");
    
        CCSprite *s11 =CCSprite::create("Images/grossini_dance_10.png");
    
        CCSprite *s12 =CCSprite::create("Images/grossini_dance_11.png");
    
        CCSprite *s13 =CCSprite::create("Images/grossini_dance_12.png");
    
        CCSprite *s14 =CCSprite::create("Images/grossini_dance_13.png");
    
        CCSprite *s15 =CCSprite::create("Images/grossini_dance_14.png");
    
     
    
        // just loading textures to slow down
    
        CCSprite::create("Images/background1.png");
    
        CCSprite::create("Images/background2.png");
    
        CCSprite::create("Images/background3.png");
    
        CCSprite::create("Images/blocks.png");
    
     
    
        s1->setPosition(ccp(50, 50));
    
        s2->setPosition(ccp(60, 50));
    
        s3->setPosition(ccp(70, 50));
    
        s4->setPosition(ccp(80, 50));
    
        s5->setPosition(ccp(90, 50));
    
        s6->setPosition(ccp(100, 50));
    
     
    
        s7->setPosition(ccp(50, 180));
    
        s8->setPosition(ccp(60, 180));
    
        s9->setPosition(ccp(70, 180));
    
        s10->setPosition(ccp(80, 180));
    
        s11->setPosition(ccp(90, 180));
    
        s12->setPosition(ccp(100, 180));
    
     
    
        s13->setPosition(ccp(50, 270));
    
        s14->setPosition(ccp(60, 270));
    
        s15->setPosition(ccp(70, 270));
    
     
    
        this->addChild(bg);
    
       
    
        this->addChild(s1);
    
        this->addChild(s2);
    
        this->addChild(s3);
    
        this->addChild(s4);
    
        this->addChild(s5);
    
        this->addChild(s6);
    
        this->addChild(s7);
    
        this->addChild(s8);
    
        this->addChild(s9);
    
        this->addChild(s10);
    
        this->addChild(s11);
    
        this->addChild(s12);
    
        this->addChild(s13);
    
        this->addChild(s14);
    
        this->addChild(s15);
    
    }
    
     
    
     
    
    void TextureCacheTestScene::runThisTest()
    
    {
    
        CCLayer* pLayer = new TextureCacheTest();
    
        addChild(pLayer);
    
     
    
        CCDirector::sharedDirector()->replaceScene(this);
    
        pLayer->release();
    
    }
  • 相关阅读:
    SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤
    SVN版本控制—branches、trunk、tag篇
    SVN将项目代码加入svn版本控制
    交换机详细解读
    ESXI
    vSphere
    VM虚拟机?
    Linux 01 LiunxvI命令大全
    “高可用性”(High Availability)??
    说一说,正常上线的流程
  • 原文地址:https://www.cnblogs.com/jiackyan/p/3019915.html
Copyright © 2011-2022 走看看