• cocos2d-x游戏开发(十五)游戏载入动画loading界面


    这个资源载入的loading界面demo是在玩客网做逆转三国的时候随手写的,尽管我在那仅仅待了2个礼拜。可是也算參与了一个商业游戏项目了,学到不少东西。当时使用的cocos2d-x还是1.0版的,我用2.1.2的调试过了。

    上图:


    好了,非常easy,代码有凝视

    上代码:

    1. #include "HelloWorldScene.h"  
    2. #include "SimpleAudioEngine.h"  
    3.   
    4. using namespace cocos2d;  
    5. using namespace CocosDenshion;  
    6.   
    7. CCScene* HelloWorld::scene()  
    8. {  
    9.     // 'scene' is an autorelease object  
    10.     CCScene *scene = CCScene::create();  
    11.       
    12.     // 'layer' is an autorelease object  
    13.     HelloWorld *layer = HelloWorld::create();  
    14.   
    15.     // add layer as a child to scene  
    16.     scene->addChild(layer);  
    17.   
    18.     // return the scene  
    19.     return scene;  
    20. }  
    21.   
    22. // on "init" you need to initialize your instance  
    23. bool HelloWorld::init()  
    24. {  
    25.     //////////////////////////////  
    26.     // 1. super init first  
    27.     if ( !CCLayer::init() )  
    28.     {  
    29.         return false;  
    30.     }  
    31.       
    32.     m_iLoadIdex = 0;  
    33.   
    34.     /////////////////////////////  
    35.     // 2. add a menu item with "X" image, which is clicked to quit the program  
    36.     //    you may modify it.  
    37.   
    38.     // add a "close" icon to exit the progress. it's an autorelease object  
    39.     CCMenuItemImage *pCloseItem = CCMenuItemImage::create(  
    40.                                         "CloseNormal.png",  
    41.                                         "CloseSelected.png",  
    42.                                         this,  
    43.                                         menu_selector(HelloWorld::menuCloseCallback) );  
    44.     pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) );  
    45.   
    46.     // create menu, it's an autorelease object  
    47.     CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);  
    48.     pMenu->setPosition( CCPointZero );  
    49.     this->addChild(pMenu, 1);  
    50.   
    51.     /////////////////////////////  
    52.     // 3. add your codes below...  
    53.   
    54.     // add a label shows "Hello World"  
    55.     // create and initialize a label  
    56.     CCLabelTTF* pLabel = CCLabelTTF::create("Hello World""Thonburi", 34);  
    57.   
    58.     // ask director the window size  
    59.     CCSize size = CCDirector::sharedDirector()->getWinSize();  
    60.   
    61.     // position the label on the center of the screen  
    62.     pLabel->setPosition( ccp(size.width / 2, size.height - 20) );  
    63.   
    64.     // add the label as a child to this layer  
    65.     this->addChild(pLabel, 1);  
    66.   
    67.     // add "HelloWorld" splash screen"  
    68.     CCSprite* pSprite = CCSprite::create("HelloWorld.png");  
    69.   
    70.     // position the sprite on the center of the screen  
    71.     pSprite->setPosition( ccp(size.width/2, size.height/2) );  
    72.   
    73.     // add the sprite as a child to this layer  
    74.     this->addChild(pSprite, 0);  
    75.       
    76.     // loading边框  
    77.     m_progressFrame = CCSprite::create("loading_fr.png");  
    78.     addChild(m_progressFrame,1);  
    79.     m_progressFrame->setPosition(ccp(240, 50));  
    80.       
    81.     // loading的动作条  
    82.     m_progressBar = CCProgressTimer::create(CCSprite::create("loading_bar.png"));  
    83.     m_progressBar->setType(kCCProgressTimerTypeBar);  
    84.     addChild(m_progressBar);  
    85.     m_progressBar->setVisible(true);  
    86.     m_progressBar->setPosition(ccp(241, 51));  
    87.     // 进度动画运动方向,从左到右  
    88.     m_progressBar->setMidpoint(ccp(0, 0));  
    89.     // 宽高变化,这里是宽度变化  
    90.     m_progressBar->setBarChangeRate(ccp(1, 0));  
    91.     m_progressBar->setPercentage(0);  
    92.       
    93.     // loading动画,没有逻辑处理,实际情况则凝视掉  
    94.     CCProgressTo *to = CCProgressTo::create(10, 100);  
    95.     m_progressBar->runAction(to);  
    96.       
    97.     // 实际的loading逻辑,能够在这里加入  
    98. //    scheduleUpdate();  
    99.     return true;  
    100. }  
    101.   
    102. void HelloWorld::update(float dt)  
    103. {  
    104.       
    105.     m_iLoadIdex++;  
    106.       
    107.     if (m_iLoadIdex <= 50) {  
    108.         loadResource(m_iLoadIdex);  
    109.         m_progressBar->setPercentage(m_iLoadIdex * 100.0 / 50);  
    110.     }  
    111.       
    112.     if (m_iLoadIdex >=50) {  
    113.         unscheduleUpdate();  
    114.     }  
    115. }  
    116.   
    117. // 实际的loading逻辑。载入资源能够在这里加入。

        

    118. // 这里仅仅用了sleep来模拟  
    119. void HelloWorld::loadResource(int index)  
    120. {  
    121.     CCLog("loading ....");  
    122.     switch (index) {  
    123.         case 0:  
    124.             break;  
    125.         default:  
    126.             sleep(1.0);  
    127.             break;  
    128.     }  
    129. }  
    130.   
    131.   
    132. void HelloWorld::menuCloseCallback(CCObject* pSender)  
    133. {  
    134.     CCDirector::sharedDirector()->end();  
    135.   
    136. #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)  
    137.     exit(0);  
    138. #endif  
    139. }  


    东西太简单,还须要上传demo源代码么。要的留言大笑
  • 相关阅读:
    475. Heaters
    69. Sqrt(x)
    83. Remove Duplicates from Sorted List Java solutions
    206. Reverse Linked List java solutions
    100. Same Tree Java Solutions
    1. Two Sum Java Solutions
    9. Palindrome Number Java Solutions
    112. Path Sum Java Solutin
    190. Reverse Bits Java Solutin
    202. Happy Number Java Solutin
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10522635.html
  • Copyright © 2020-2023  润新知