您的位置:首页 >> Cocos2d-x >> 和屌丝一起学cocos2dx-ProgressTo

和屌丝一起学cocos2dx-ProgressTo

[ 孤狼 | 2015-02-09 17:15:43 | Cocos2d-x | 3232°C | 0条评论 ]
声 明

本教程仅用于初学cocos2dx同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用cocos2dx版本为2.1.4。本教程内容可以自由转载,但必须同时附带本声明,或注明出处。
gl.paea.cn版权所有。


       天空一道闪电.....老子被劈了。。。欢迎回到“和屌丝一起学cocos2dx”系列教程,上节我们说到“更新函数”不知道大家有没有把课后的小例子做出来呢?是不是很好玩呢,下回大家可以用这个方法做个石英钟什么的,一定很不错哦。好了,闲话就到这里,我们开始今天的课程吧。今天我们一起来说一下CCProgressTo进度计时器。


【一】:这是什么?


       相信大家都玩过红警吧,这款经典的游戏,今天可以给我提示,在红警中,我们经常会创建各个工厂,这个时候,你需要等待一段时间,这个等待的工作就是进度计时器做到的。





【二】:函数


1.创建:

CCProgresstime::create("精灵对象");


2.种类:

cocos2dx中,有2种计时器的样式:

[1].kCCProgressTimerTypeRadial:扇形进度计时器

[2].kCCProgressTimerTypeBar:条形进度计时器


3.函数:

setType();                //设置进度条样式

[扇形][1].setPercentage();                  //设置进度值(0-100)

[扇形][2].setReverseProgress();        //设置反向计时(true为开启反向)

[条形][3].setBarChangeRate();          //修改条形计时器变换样式(定义起始样式)

       ccp(1,0):只有X轴变化。          (起始X轴不显示)

       ccp(0,1):只有Y轴变化。          (起始Y轴不显示)

       ccp(1,1):X,Y轴都变化。       (起始X,y轴都不显示)

       ccp(0.5,0.5):X,Y轴都变化 。(起始X,y轴都显示一半)

[条形][4].setMidpoint();                       //设置计时器的显示方式方向,范围(0-1)(默认ccp(0.5,0.5))

       注意:该函数会受到setBarChangeRate函数影响

       当计时条样式为X轴变化时(设置Y轴无效果,这里设为0)

       ccp(1,0):        从右到左显示。

       ccp(0.5,0):     从中间到两边显示。

       ccp(0,0):        从左到右显示

       当计时条样式为Y轴变化时(设置X轴无效果,这里设为0)

       ccp(0,1):        从上到下显示。

       ccp(0,0.5):     从中间到两边显示。

       ccp(0,0):        从下到上显示。

       当计时条样式为X、Y轴都变化时

       ccp(0,1):        X从左到右显示Y从上到下显示

       ccp(0,0.5):     X从中间到两边显示Y从中间到两边显示

       ccp(1,0):        X从右到左显示Y从下到上显示

       ccp(0.5,0):     X从中间到两边显示Y从下到上显示

       ccp(0,0):        X从左到右显示Y从下到上显示

       ccp(0.5,0.5): X从中间到两边显示Y从中间到两边显示

       ccp(1,1):        X从右到左显示Y从上到下显示


【三】:示例


1.新建项目 Progress

2.准备用到的图片



3.开始编码


Progressdemo.h


1.包含“cocos-ext.h”文件。#include "cocos-ext.h"

2.引用命名空间“cocos2d::extension”。using namespace cocos2d::extension;

3.我们需2个回调函数用于按钮关联事件。

void downaction1(CCObject * sender,CCControlEvent);

void downaction2(CCObject * sender,CCControlEvent);

4.需2个回调函数用于建造完成关联事件。

void deletesp();

void deletesp2();




Progressdemo.cpp


1.引用命名空间“cocos2d::extension”。using namespace cocos2d::extension;

2.放上背景。

       CCSprite* bgps = CCSprite::create("bg.jpg");

       bgps->setPosition(ccp(mysize.width/2, mysize.height/2));

       this->addChild(bgps, 0);



3.创建2个按钮。

CCScale9Sprite * c91=CCScale9Sprite::create("button.png");

CCScale9Sprite * c92=CCScale9Sprite::create("button.png");

CCLabelTTF * ttf1=CCLabelTTF::create("Ji Di","Arial",20);

CCLabelTTF * ttf2=CCLabelTTF::create("Dian Zhan","Arial",20);

CCControlButton * mybutton1=CCControlButton::create(ttf1,c91);

CCControlButton * mybutton2=CCControlButton::create(ttf2,c92);

mybutton1->setPosition(ccp(mysize.width-50,mysize.height-140));

mybutton2->setPosition(ccp(mysize.width-50,mysize.height-180));

mybutton1->setPreferredSize(CCSizeMake(80,30));

mybutton2->setPreferredSize(CCSizeMake(80,30));

this->addChild(mybutton1);

this->addChild(mybutton2);

mybutton1->addTargetWithActionForControlEvents(

   this,

   cccontrol_selector(Progressdemo::downaction1),

   CCControlEventTouchDown

);

mybutton2->addTargetWithActionForControlEvents(

   this,

   cccontrol_selector(Progressdemo::downaction2),

   CCControlEventTouchDown

);



4.实现按钮回调函数

void Progressdemo::downaction1(CCObject * sender,CCControlEvent){

   //创建扇形进度条

   CCSize mysize=CCDirector::sharedDirector()->getWinSize();

   CCProgressTimer *mypro=CCProgressTimer::create(CCSprite::create("sjd.png"));

   mypro->setPosition(ccp(100,100));

   mypro->setType(kCCProgressTimerTypeRadial);

   mypro->setPercentage(100);

   this->addChild(mypro,100,1);

   //创建计时器

   CCProgressTo * to=CCProgressTo::create(5,100);

   //这里为了实现执行完成后再操作需要用到回调函数

   //感谢  青岛|亚卖呆  技术支持

   CCCallFunc * callback=CCCallFunc::create(this,callfunc_selector(Progressdemo::deletesp));

   CCAction * act=CCSequence::create(to,callback,NULL);

   mypro->runAction(act);

}



void Progressdemo::downaction2(CCObject * sender,CCControlEvent){

   //创建条形进度条

   CCSize mysize=CCDirector::sharedDirector()->getWinSize();

   CCProgressTimer *mypro=CCProgressTimer::create(CCSprite::create("tjd.png"));

   mypro->setPosition(ccp(100,150));

   mypro->setType(kCCProgressTimerTypeBar);

   mypro->setBarChangeRate(ccp(1,0));

   mypro->setMidpoint(ccp(0,1));

   this->addChild(mypro,100,2);

   //创建计时器

   CCProgressTo * to=CCProgressTo::create(3,100);

   //这里为了实现执行完成后再操作需要用到回调函数

   //感谢  青岛|亚卖呆  技术支持

   CCCallFunc * callback=CCCallFunc::create(this,callfunc_selector(Progressdemo::deletesp2));

   CCAction * act=CCSequence::create(to,callback,NULL);

   mypro->runAction(act);

}



5.实现建造回调函数

void Progressdemo::deletesp(){

   CCProgressTimer *mypro=(CCProgressTimer *)this->getChildByTag(1);

   this->removeChild(mypro);

   CCSize mysize=CCDirector::sharedDirector()->getWinSize();

   CCSprite * jidi=CCSprite::create("jd.png");

   jidi->setPosition(ccp(100,100));

   //设置缩放倍数

   jidi->setScale(0.3f);

   this->addChild(jidi);

}



void Progressdemo::deletesp2(){

   CCProgressTimer *mypro=(CCProgressTimer *)this->getChildByTag(2);

   this->removeChild(mypro);

   CCSize mysize=CCDirector::sharedDirector()->getWinSize();

   CCSprite * fdz=CCSprite::create("fdz.png");

   fdz->setPosition(ccp(100,150));

   //设置缩放倍数

   fdz->setScale(0.3f);

   this->addChild(fdz);

}




       好了,修完,然后我们开始看看效果吧。








     

        好了,开打,biu~~biu~~biu~~~


本节DEMO下载


转载请注明出处:http://gl.paea.cn/n.php?n=19
 
如您看得高兴,欢迎随意投喂,让我们坚持创作!
赞赏一个鸡腿
还没有人留下遗迹
综合 · 搜索