cocos2d-x的初步学习之爱消除一

来源:互联网 发布:ubuntu 备份系统 编辑:程序博客网 时间:2024/05/16 00:42

这篇文章中,我们将模仿某个游戏来实现,首页我们做首界面,这里都是一些UI元素的布局,其中会涉及到一些动画,比如贝塞尔曲线,还有cctableview来显示我们的得分,做个排行榜,OK,下面我直接上代码了:

HelloWorldScene.h

[cpp] view plaincopy
  1. public:  
  2.     // Method 'init' in cocos2d-x returns bool, instead of 'id' in cocos2d-iphone (an object pointer)  
  3.     virtual bool init();  
  4.   
  5.     // there's no 'id' in cpp, so we recommend to return the class instance pointer  
  6.     static cocos2d::CCScene* scene();  
  7.       
  8.     // preprocessor macro for "static create()" constructor ( node() deprecated )  
  9.     CREATE_FUNC(HelloWorld);  
  10.       
  11.       
  12.       
  13. private:  
  14.       
  15.     void initData(void);  
  16.       
  17.     void initUI(void);  
  18.       
  19.     void initSounds(void);  
  20.       
  21.     void addBaoshi(void);  
  22.       
  23.     cocos2d::CCProgressTimer *levelProgress;  
  24.     cocos2d::CCLabelTTF *levelLabel;  
  25.     cocos2d::CCLabelTTF *levelbfbLabel;  
  26.   
  27.     cocos2d::CCLabelTTF *timeLabel;  
  28.       
  29.     cocos2d::CCLayerColor *pauselayer;  
  30.       
  31.     cocos2d::CCSprite *sharebgSprite;  
  32.       
  33.     cocos2d::extension::CCTableView *phbTableView;  
  34.       
  35.     void buyYeZi(void);  
  36.       
  37.     void shared(void);  
  38.       
  39.     void startGame(void);  
  40.       
  41.     cocos2d::CCArray *yeziArray;  
  42.   
  43.     void removeSprite(void);  
  44.       
  45.     void createPauseLayer(void);  
  46.       
  47.     void pauseButtonPressed(void);  
  48.       
  49.     bool lock;  
  50.       
  51.     void rotateAnimation(void);  
  52.       
  53.     float rotate;  
HelloWorldScene.cpp

[cpp] view plaincopy
  1. bool HelloWorld::init()  
  2. {  
  3.     //////////////////////////////  
  4.     // 1. super init first  
  5.     if ( !CCLayer::init() )  
  6.     {  
  7.         return false;  
  8.     }  
  9.   
  10.       
  11.     this->initData();  
  12.       
  13.     this->initUI();  
  14.       
  15.     this->initSounds();  
  16.       
  17.     this->createPauseLayer();  
  18.       
  19.     return true;  
  20. }  
  21.   
  22.   
  23. void HelloWorld::initData()  
  24. {  
  25.   
  26.      
  27.     CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("textures.plist");  
  28.   
  29.     yeziArray=CCArray::create();  
  30.       
  31.     yeziArray->retain();  
  32.       
  33.       
  34.     dataArray=CCArray::create();  
  35.     dataArray->retain();  
  36.       
  37.       
  38.   
  39.       
  40. }  
  41.   
  42.   
  43. void HelloWorld::initSounds()  
  44. {  
  45.   
  46.   
  47.       
  48.     SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("bg1.mp3");  
  49.       
  50.     SimpleAudioEngine::sharedEngine()->playBackgroundMusic("bg1.mp3"true);  
  51.       
  52.   
  53. }  
  54.   
  55.   
  56. void HelloWorld::initUI()  
  57. {  
  58.   
  59.       
  60.     //背景  
  61.     CCSprite *bgSprite=CCSprite::create("startbg.png");  
  62.     bgSprite->setAnchorPoint(ccp(0.5, 0.5));  
  63.   
  64.     bgSprite->setPosition(ccp(wSize.width/2, wSize.height/2));  
  65.     this->addChild(bgSprite, 1);  
  66.       
  67.   
  68.     //宝石icon  
  69.     CCSprite *baoshiiconSprite=CCSprite::createWithSpriteFrameName("ruby.png");  
  70.   
  71.     baoshiiconSprite->setAnchorPoint(ccp(0, 0));  
  72.     baoshiiconSprite->setPosition(ccp(50, wSize.height-200));  
  73.       
  74.     this->addChild(baoshiiconSprite, 1);  
  75.   
  76.     //宝石数量  
  77.     CCLabelTTF *bsnumsLabel=CCLabelTTF::create("100""MarkerFelt-Thin", 35);  
  78.   
  79.     bsnumsLabel->setAnchorPoint(ccp(0, 0));  
  80.     bsnumsLabel->setPosition(ccp(baoshiiconSprite->getPosition().x+baoshiiconSprite->getContentSize().width+25, wSize.height-200+15));  
  81.     this->addChild(bsnumsLabel, 1);  
  82.       
  83.       
  84.     //购买菜单  
  85.     CCSprite *addSprite=CCSprite::createWithSpriteFrameName("add.png");  
  86.       
  87.     CCMenuItemSprite *addItem = CCMenuItemSprite::create(addSprite, addSprite, this, menu_selector(HelloWorld::addBaoshi));  
  88.     addItem->setAnchorPoint(ccp(0, 0));  
  89.     addItem->setPosition(ccp(bsnumsLabel->getPosition().x+bsnumsLabel->getContentSize().width+40, bsnumsLabel->getPosition().y-10));  
  90.       
  91.     CCMenu* pMenu = CCMenu::create(addItem, NULL);  
  92.     pMenu->setPosition( CCPointZero );  
  93.     this->addChild(pMenu, 1);  
  94.       
  95.     //等级进度条  
  96.     CCSprite *progressbgSprite=CCSprite::createWithSpriteFrameName("exp_bar_out.png");  
  97.     progressbgSprite->setAnchorPoint(ccp(0, 0));  
  98.     progressbgSprite->setPosition(ccp(440, wSize.height-190));  
  99.       
  100.     this->addChild(progressbgSprite, 1);  
  101.       
  102.     CCSprite *progressSprite=CCSprite::createWithSpriteFrameName("exp_bar_in.png");  
  103.       
  104.     levelProgress=CCProgressTimer::create(progressSprite);  
  105.       
  106.     levelProgress->setType(kCCProgressTimerTypeBar);  
  107.     levelProgress->setAnchorPoint(ccp(0, 0));  
  108.     levelProgress->setPosition(ccp(440, wSize.height-182));  
  109.       
  110.     //进度动画运动方向,可以多试几个值,看看效果  
  111.     levelProgress->setMidpoint(ccp(0, 0));  
  112.       
  113.     //进度条宽高变化  
  114.     levelProgress->setBarChangeRate(ccp(1, 0));  
  115.       
  116.     levelProgress->setPercentage(67);  
  117.       
  118.     this->addChild(levelProgress, 1);  
  119.       
  120.   
  121.     CCSprite *starSprite=CCSprite::createWithSpriteFrameName("exp_star.png");  
  122.       
  123.     starSprite->setAnchorPoint(ccp(0, 0));  
  124.     starSprite->setPosition(ccp(410, wSize.height-195));  
  125.       
  126.     this->addChild(starSprite, 1);  
  127.   
  128.     //等级  
  129.     levelLabel=CCLabelTTF::create("2""MarkerFelt-Thin", 35);  
  130.       
  131.     levelLabel->setAnchorPoint(ccp(0, 0));  
  132.     levelLabel->setPosition(ccp(starSprite->getPosition().x+24, starSprite->getPosition().y+10));  
  133.     levelLabel->setColor(ccc3(0.5, 0.5, 0.5));  
  134.     this->addChild(levelLabel,1);  
  135.       
  136.     //百分比  
  137.     levelbfbLabel=CCLabelTTF::create("67%""MarkerFelt-Thin", 30);  
  138.       
  139.     levelbfbLabel->setAnchorPoint(ccp(0, 0));  
  140.     levelbfbLabel->setPosition(ccp(starSprite->getPosition().x+75, starSprite->getPosition().y+12));  
  141.     this->addChild(levelbfbLabel,1);  
  142.       
  143.       
  144. //    CCLabelTTF *namebLabel=CCLabelTTF::create("王子大人", "MarkerFelt-Thin", 55);  
  145. //      
  146. //    namebLabel->setAnchorPoint(ccp(0.5, 0.5));  
  147. //    namebLabel->setPosition(ccp(wSize.width/2,140));  
  148. //    this->addChild(namebLabel,1);  
  149.       
  150.       
  151.     //开始菜单  
  152.     CCSprite *startSprite=CCSprite::createWithSpriteFrameName("button_play.png");  
  153.     CCMenuItemSprite *startItem = CCMenuItemSprite::create(startSprite, startSprite, this, menu_selector(HelloWorld::startGame));  
  154.     startItem->setPosition(ccp(wSize.width/2,100));  
  155.       
  156.     CCMenu* startMenu = CCMenu::create(startItem, NULL);  
  157.     startMenu->setPosition(CCPointZero);  
  158.     this->addChild(startMenu, 1);  
  159.       
  160.     //能量,满格5个  
  161.     for (int i=0; i<5; i++)  
  162.     {  
  163.           
  164.         //空的  
  165.         CCSprite *energySprite=CCSprite::createWithSpriteFrameName("energy_empty.png");  
  166.           
  167.         energySprite->setAnchorPoint(ccp(0, 0));  
  168.         energySprite->setPosition(ccp(55+(3+energySprite->getContentSize().width)*i, wSize.height-288));  
  169.           
  170.         this->addChild(energySprite, 1,100+i);  
  171.           
  172.         //满的  
  173.         CCSprite *energySprite2=CCSprite::createWithSpriteFrameName("energy_full.png");  
  174.           
  175.         energySprite2->setAnchorPoint(ccp(0, 0));  
  176.         energySprite2->setPosition(ccp(55+(3+energySprite2->getContentSize().width)*i, wSize.height-288));  
  177.           
  178.         this->addChild(energySprite2, 1,200+i);  
  179.       
  180.         yeziArray->addObject(CCString::createWithFormat("%d",200+i));  
  181.       
  182.     }  
  183.       
  184.     //button_share_small.png  
  185.     //energy_empty.png  
  186.       
  187.     //百分比  
  188.     timeLabel=CCLabelTTF::create("10:00""MarkerFelt-Thin", 30);  
  189.       
  190.     timeLabel->setAnchorPoint(ccp(0, 0));  
  191.     timeLabel->setPosition(ccp(355, wSize.height-280));  
  192.     timeLabel->setColor(ccYELLOW);  
  193.     this->addChild(timeLabel,1);  
  194.       
  195.       
  196.     //购买叶子  
  197.     CCSprite *addSprite2=CCSprite::createWithSpriteFrameName("add.png");  
  198.     CCMenuItemSprite *yeziItem = CCMenuItemSprite::create(addSprite2, addSprite2, this, menu_selector(HelloWorld::buyYeZi));  
  199.     yeziItem->setAnchorPoint(ccp(0, 0));  
  200.     yeziItem->setPosition(ccp(timeLabel->getPosition().x+timeLabel->getContentSize().width, timeLabel->getPosition().y-18));  
  201.       
  202.     CCMenu* yeziMenu = CCMenu::create(yeziItem, NULL);  
  203.     yeziMenu->setPosition( CCPointZero );  
  204.     this->addChild(yeziMenu, 1);  
  205.       
  206.       
  207.     //分享背景动画  
  208.     sharebgSprite=CCSprite::createWithSpriteFrameName("glow.png");  
  209.       
  210.     sharebgSprite->setAnchorPoint(ccp(0.5,0.5));  
  211.     sharebgSprite->setPosition(ccp(yeziItem->getPosition().x+yeziItem->getContentSize().width+42, yeziItem->getPosition().y-18+50));  
  212.     sharebgSprite->setScale(0.18);  
  213.     this->addChild(sharebgSprite, 1);  
  214.       
  215.       
  216.     //分享  
  217.     CCSprite *shareSprite=CCSprite::createWithSpriteFrameName("button_share_small.png");  
  218.     CCMenuItemSprite *shareItem = CCMenuItemSprite::create(shareSprite, shareSprite, this, menu_selector(HelloWorld::shared));  
  219.     shareItem->setAnchorPoint(ccp(0, 0));  
  220.     shareItem->setPosition(ccp(yeziItem->getPosition().x+yeziItem->getContentSize().width, yeziItem->getPosition().y+6));  
  221.       
  222.     CCMenu* shareMenu = CCMenu::create(shareItem, NULL);  
  223.     shareMenu->setPosition( CCPointZero );  
  224.     this->addChild(shareMenu, 1);  
  225.       
  226.       
  227. }  
  228.   
  229.   
  230. //购买宝石  
  231. void HelloWorld::addBaoshi()  
  232. {  
  233.   
  234.       
  235.     SimpleAudioEngine::sharedEngine()->playEffect("buttonclick.mp3");  
  236.   
  237.   
  238. }  
  239.   
  240.   
  241. //购买叶子  
  242. void HelloWorld::buyYeZi()  
  243. {  
  244.   
  245.   
  246.     SimpleAudioEngine::sharedEngine()->playEffect("buttonclick.mp3");  
  247.   
  248.   
  249.       
  250.   
  251. }  
  252.   
  253.   
  254. //分享  
  255. void HelloWorld::shared()  
  256. {  
  257.       
  258.       
  259.      
  260.     SimpleAudioEngine::sharedEngine()->playEffect("buttonclick.mp3");  
  261.       
  262. }  
  263.   
  264.   
  265. //开始  
  266. void HelloWorld::startGame()  
  267. {  
  268.       
  269.       
  270.     if (yeziArray->count()==0)  
  271.     {  
  272.           
  273.           
  274.         pauselayer->setVisible(true);  
  275.           
  276.           
  277.         return;  
  278.           
  279.           
  280.     }  
  281.       
  282.       
  283.     if (lock==false)  
  284.     {  
  285.           
  286.         lock=true;  
  287.           
  288.   
  289.         SimpleAudioEngine::sharedEngine()->playEffect("buttonclick.mp3");  
  290.           
  291.           
  292.         CCString *numberString=(CCString *)yeziArray->lastObject();  
  293.           
  294.         CCSprite *sprite=(CCSprite *)this->getChildByTag(numberString->intValue());  
  295.           
  296.         ccBezierConfig bezierConfig;  
  297.         bezierConfig.controlPoint_1=ccp(sprite->getPosition().x, sprite->getPosition().y);  
  298.         bezierConfig.controlPoint_2=ccp(wSize.width+200, wSize.height/2);  
  299.         bezierConfig.endPosition=ccp(wSize.width/2-15,80);  
  300.           
  301.         CCBezierTo *bezier=CCBezierTo::create(1.5f, bezierConfig);  
  302.           
  303.           
  304.         CCSequence *seq=CCSequence::create(bezier,CCDelayTime::create(0.5f),CCCallFunc::create(this,callfunc_selector(HelloWorld::removeSprite)),NULL);  
  305.           
  306.         sprite->runAction(seq);  
  307.           
  308.   
  309.     }  
  310.   
  311.       
  312.       
  313. }  
  314.   
  315.   
  316. void HelloWorld::removeSprite()  
  317. {  
  318.   
  319.     CCString *numberString=(CCString *)yeziArray->lastObject();  
  320.       
  321.     CCSprite *sprite=(CCSprite *)this->getChildByTag(numberString->intValue());  
  322.   
  323.     yeziArray->removeLastObject();  
  324.       
  325.     sprite->removeFromParentAndCleanup(true);  
  326.       
  327.       
  328.     lock=false;  
  329.       
  330.       
  331.     dataIndex++;  
  332.       
  333.       
  334.     CCString *infoString=CCString::createWithFormat("%s",this->getSystemTime()->getCString());  
  335.       
  336.     //CCLOG("%s",infoString->getCString());  
  337.       
  338.       
  339.     dataArray->addObject(infoString);  
  340.       
  341.       
  342.     phbTableView->reloadData();  
  343.       
  344.   
  345. //    //存储  
  346. //    CCUserDefault::sharedUserDefault()->setStringForKey(CCString::createWithFormat("data%d",dataIndex)->getCString(), infoString->getCString());  
  347. //      
  348. //    //提交  
  349. //    CCUserDefault::sharedUserDefault()->flush();  
  350.   
  351.       
  352.       
  353. }  
  354.   
  355. //创建暂停界面  
  356. void HelloWorld::createPauseLayer()  
  357. {  
  358.       
  359.       
  360.     pauselayer=CCLayerColor::create(ccc4(255, 255, 255, 0), 479, 520);  
  361.       
  362.     pauselayer->setAnchorPoint(ccp(0, 0));  
  363.     pauselayer->setPosition(ccp(wSize.width/2-pauselayer->getContentSize().width/2, wSize.height/2-pauselayer->getContentSize().height/2));  
  364.       
  365.       
  366.     this->addChild(pauselayer, 1);  
  367.   
  368.       
  369.     CCSprite *bgSprite=CCSprite::create("bg_pause.png");  
  370.       
  371.     bgSprite->setPosition(ccp(pauselayer->getContentSize().width/2, pauselayer->getContentSize().height/2));  
  372.       
  373.     pauselayer->addChild(bgSprite);  
  374.       
  375.       
  376.     CCLabelTTF *contentLabel=CCLabelTTF::create("你没有足够的叶子,你可以从叶子商店里购买,或者等几分钟。""MarkerFelt-Thin",32);  
  377.     contentLabel->setPosition(ccp(pauselayer->getContentSize().width/2, pauselayer->getContentSize().height/2));  
  378.   
  379.     contentLabel->setDimensions(CCSize(pauselayer->getContentSize().width-40,200));  
  380.     //横向对齐方式  
  381.     contentLabel->setHorizontalAlignment(kCCTextAlignmentLeft);  
  382.   
  383.     contentLabel->setColor(ccWHITE);  
  384.     pauselayer->addChild(contentLabel);  
  385.   
  386.       
  387.     CCSprite *sureSprite=CCSprite::createWithSpriteFrameName("button_ok.png");  
  388.     CCMenuItemSprite *sureItem = CCMenuItemSprite::create(sureSprite, sureSprite, this, menu_selector(HelloWorld::pauseButtonPressed));  
  389.   
  390.     sureItem->setPosition(ccp(pauselayer->getContentSize().width/2, pauselayer->getContentSize().height/2-160));  
  391.       
  392.     CCMenu* sureMenu = CCMenu::create(sureItem, NULL);  
  393.     sureMenu->setPosition(CCPointZero);  
  394.     pauselayer->addChild(sureMenu, 1);  
  395.   
  396.       
  397.     pauselayer->setVisible(false);  
  398.   
  399.       
  400.       
  401.       
  402.       
  403. }  
  404.   
  405.   
  406. //ok按钮  
  407. void HelloWorld::pauseButtonPressed()  
  408. {  
  409.   
  410.       
  411.     pauselayer->setVisible(false);  
  412.   
  413.       
  414.   
  415. }  

上面中,我们进行了界面的布局,没什么复杂的东西,主要是叶子的逻辑及动画,满状态的时候是5片叶子,我们现在点开始,然后就减少一片叶子,并且叶子做一个贝塞尔曲线的动画,当叶子都没有的时候,我们提示一个对话框界面,告诉我们没有叶子了。

效果如下

    


~~然后是分享后面的背景图旋转动画,

在.h中

void rotateAnimation(void);

在.cpp中定义一个刷新函数

[cpp] view plaincopy
  1.  //刷新  
  2.  this->schedule(schedule_selector(HelloWorld::rotateAnimation), 0.1);  
  3.   
  4. //旋转动画  
  5. void HelloWorld::rotateAnimation()  
  6. {  
  7.   
  8.       
  9.     rotate=rotate+10;  
  10.       
  11.     sharebgSprite->setRotation(rotate);  
  12.   
  13. }  

我们设定每隔0.1秒增加10度,当然这个你可以自己设定,然后我们就可以看见分享背景sprite旋转了,(*^__^*) ……


OK,,接下来,我们要加入个排行榜的界面,我们利用cctbaleview,前面的文章中,我已经简单介绍过cctableview了,下面我们直接上代码

在.h中我们增加cctableview的几个虚函数

[cpp] view plaincopy
  1. //CCTableViewDelegate继承自CCScrollViewDelegate  
  2.     virtual void scrollViewDidScroll(cocos2d::extension::CCScrollView* view);  
  3.       
  4.     virtual void scrollViewDidZoom(cocos2d::extension::CCScrollView* view);  
  5.       
  6.     //点击哪个cell  
  7.     virtual void tableCellTouched(cocos2d::extension::CCTableView* table, cocos2d::extension::CCTableViewCell* cell);  
  8.     //每个cell的size  
  9.     virtual cocos2d::CCSize cellSizeForTable(cocos2d::extension::CCTableView *table);  
  10.     //生成cell  
  11.     virtual cocos2d::extension::CCTableViewCell* tableCellAtIndex(cocos2d::extension::CCTableView *table, unsigned int idx);  
  12.     //cell的数量  
  13.     virtual unsigned int numberOfCellsInTableView(cocos2d::extension::CCTableView *table);  
然后在.cpp中具体去实现它们

[cpp] view plaincopy
  1. //cell数量  
  2. unsigned int HelloWorld::numberOfCellsInTableView(cocos2d::extension::CCTableView *table)  
  3. {  
  4.   
  5.   
  6.       
  7.     return dataArray->count();  
  8.   
  9.   
  10.   
  11. }  
  12.   
  13.   
  14. //每行cell  
  15. CCTableViewCell* HelloWorld::tableCellAtIndex(CCTableView *table, unsigned int idx)  
  16. {  
  17.   
  18.   
  19.     CCTableViewCell *cell=table->dequeueCell();  
  20.       
  21.       
  22.     if (!cell) {  
  23.           
  24.         cell = new CCTableViewCell();  
  25.         cell->autorelease();  
  26.   
  27.   
  28.           
  29.     }  
  30.   
  31.       
  32.     cell->removeAllChildrenWithCleanup(true);  
  33.       
  34.       
  35.     //金银铜  
  36.     if (idx==0)  
  37.     {  
  38.           
  39.         CCSprite *pSprite = CCSprite::createWithSpriteFrameName("rank1.png");  
  40.         pSprite->setPosition(ccp(40, 60));  
  41.           
  42.         cell->addChild(pSprite);  
  43.   
  44.           
  45.     }  
  46.     else if (idx==1)  
  47.     {  
  48.           
  49.         CCSprite *pSprite = CCSprite::createWithSpriteFrameName("rank2.png");  
  50.         pSprite->setPosition(ccp(40, 60));  
  51.         pSprite->setTag(456);  
  52.         cell->addChild(pSprite);  
  53.     }  
  54.     else if (idx==2)  
  55.     {  
  56.           
  57.         CCSprite *pSprite = CCSprite::createWithSpriteFrameName("rank3.png");  
  58.         pSprite->setPosition(ccp(40, 60));  
  59.   
  60.         cell->addChild(pSprite);  
  61.        
  62.           
  63.     }  
  64.       
  65.   
  66.     int touxiangindex=arc4random()%3+1;  
  67.       
  68.     CCString *nameString=CCString::createWithFormat("spin%d.png",touxiangindex);  
  69.       
  70.     CCSprite *txSprite = CCSprite::createWithSpriteFrameName(nameString->getCString());  
  71.     txSprite->setPosition(ccp(130, 60));  
  72.     txSprite->setScale(0.7);  
  73.     txSprite->setTag(789);  
  74.     cell->addChild(txSprite);  
  75.       
  76.      
  77.     CCString *fenshu=(CCString *)dataArray->objectAtIndex(idx);  
  78.       
  79.     CCLabelTTF *fenshuLabel = CCLabelTTF::create(fenshu->getCString(), "Arial", 36.0);  
  80.     fenshuLabel->setPosition(ccp(360, 60));  
  81.     fenshuLabel->setTag(123);  
  82.     fenshuLabel->setColor(ccYELLOW);  
  83.     cell->addChild(fenshuLabel);  
  84.       
  85.       
  86.     return cell;  
  87.   
  88.   
  89.   
  90.   
  91.   
  92. }  
  93.   
  94.   
  95. CCSize HelloWorld::cellSizeForTable(CCTableView *table)  
  96. {  
  97.       
  98.       
  99.       
  100.     return CCSizeMake(table->getContentSize().width, 120);  
  101.       
  102.       
  103. }  
  104.   
  105.   
  106.   
  107.   
  108. void HelloWorld::tableCellTouched(CCTableView *table, CCTableViewCell *cell)  
  109. {  
  110.       
  111.       
  112.       
  113.     CCLOG("%d",cell->getIdx());  
  114.       
  115.       
  116.       
  117.       
  118.       
  119.       
  120. }  
  121.   
  122.   
  123. void HelloWorld::scrollViewDidScroll(CCScrollView *view)  
  124. {  
  125.       
  126.       
  127.       
  128.       
  129.       
  130. }  
  131.   
  132. void HelloWorld::scrollViewDidZoom(CCScrollView *view)  
  133. {  
  134.       
  135.       
  136.       
  137.       
  138.       
  139.       
  140. }  

OK,就这么简单,在这里,我们还要获取系统的时间,cocos2dx中获取时间的函数如下

[cpp] view plaincopy
  1. //得到系统时间  
  2. CCString* HelloWorld::getSystemTime()  
  3. {  
  4.   
  5.       
  6.     struct tm *tm;  
  7. #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)  
  8.     //win32平台  
  9.     time_t timep;  
  10.     time(&timep);  
  11.     tm = localtime(&timep);  
  12. #else  
  13.     //android、ios平台  
  14.       
  15.     struct cc_timeval now;  
  16.     CCTime::gettimeofdayCocos2d(&now, NULL);  
  17.     tm = localtime(&now.tv_sec);  
  18. #endif  
  19.     int year = tm->tm_year + 1900;  
  20.     int month = tm->tm_mon + 1;  
  21.     int day = tm->tm_mday;  
  22.     int hour=tm->tm_hour;  
  23.     int min=tm->tm_min;  
  24.   
  25.       
  26.     CCString *string=CCString::createWithFormat("%d-%d-%d %d:%d",year,month,day,hour,min);  
  27.       
  28.       
  29.     return string;  
  30.   
  31. }  

OK,,我们看下效果图



OK~~~~~~~~~~~(*^__^*) …… 还有10分钟的倒计时,不知道大家有什么好的方法,我的想法应该是跟系统的时间去关联,这样进入后台或是关闭程序,时间还是继续进行的,通过获取系统的时间,然后某个算法来实现。。。


0 0
原创粉丝点击