cocos2dx 定时更新用法

来源:互联网 发布:linux ansi 控制码 编辑:程序博客网 时间:2024/06/05 09:54

【一】:函数


1.scheduleUpdate

2.[1]schedule("目标函数");//等同于scheduleUpdate

2.[2]schedule("目标函数","更新时间f");

2.[3]schedule("目标函数","更新时间f","更新次数","每次等待时间f");

3.scheduleOnce("目标函数","等待时间f");

区别1:scheduleUpdate刷新间隔为每一帧,schedule刷新间隔可以自己设置(默认1帧),scheduleOnce只执行一次。

区别2:scheduleUpdate函数会自动刷新当前类中的update函数体,而schedule和scheduleOnce可以指定刷新的函数体


【二】:示例


1.我们要定义一个更新函数update();void update(float tmd); //这里一定要传参,否则不会调用哦2.我们再定义一个更新函数myupdate();void myupdate(float tmd);3.我们再定义一个更新函数myupdate3();void myupdate(float tmd);4.在定义3个变量用于做判断int a;int b;int c;

1.我们先设置三个精灵,让三个函数以三种速度移动。CCSize mysize=CCDirector::sharedDirector()->getWinSize();CCSprite * sp1=CCSprite::create("CloseNormal.png");sp1->setPosition(ccp(0,mysize.height-50));this->addChild(sp1,0,521);CCSprite * sp2=CCSprite::create("CloseNormal.png");sp2->setPosition(ccp(0,mysize.height-150));this->addChild(sp2,0,522);CCSprite * sp3=CCSprite::create("CloseNormal.png");sp3->setPosition(ccp(0,mysize.height-250));this->addChild(sp3,0,523);a=1;b=1;c=1;


2.我们要先在初始化函数里调用scheduleUpdate函数和schedule函数以及scheduleOnce函数。scheduleUpdate();schedule(schedule_selector(Updatedemo::myupdate),1.0f);scheduleOnce(schedule_selector(Updatedemo::myupdate2),3.0f);

3.实现我们的3个更新函数。void Updatedemo::update(float tmd){   CCSprite * sp=(CCSprite*)this->getChildByTag(521);   if(a==1){       sp->setPositionX(sp->getPositionX()+1);   }else{       sp->setPositionX(sp->getPositionX()-1);   }   if(sp->getPositionX()<0){       a=1;   }   if(sp->getPositionX()>480){       a=-1;   }}void Updatedemo::myupdate(float tmd){   CCSprite * sp=(CCSprite*)this->getChildByTag(522);   if(b==1){       sp->setPositionX(sp->getPositionX()+10);   }else{       sp->setPositionX(sp->getPositionX()-10);   }   if(sp->getPositionX()<0){       b=1;   }   if(sp->getPositionX()>480){       b=-1;   }}void Updatedemo::myupdate2(float tmd){   CCSprite * sp=(CCSprite*)this->getChildByTag(523);   if(c==1){       sp->setPositionX(sp->getPositionX()+100);   }else{       sp->setPositionX(sp->getPositionX()-100);   }   if(sp->getPositionX()<0){       c=1;   }   if(sp->getPositionX()>480){       c=-1;   }}



   好了,这里最上面的sp1是每帧都运行,中间的sp2是1秒一次,最下面的sp3只运行一次

demo下载地址

原创粉丝点击