Cocos2d-x三种定时器的使用schedule,scheduleUpdate,scheduleOnce

Cocos2d-x三种定时器的使用schedule,scheduleUpdate,scheduleOnce

首先,什么是定时器呢?或许有时候我们想没个一定的时间周期性地在屏幕上生成一个精灵,或者周期性地检验物体间的碰撞。当我们想周期性地(一次或者多次)去执行某个方法或某段程序时,就可以交给定时器来解决。

 

Cocos2d-x中有三种定时器,分别是schedule,scheduleUpdate,scheduleOnce。有了定时器,我们就可以很方便地实现以上的功能,想想是不是还有些小激动呢。今天就主要学习这三种定时器的用法:

 

1.schedule

通过该方法,程序可以每隔设定的秒数内周期性地调用指定的方法(方法名自定义)。

首先还是在HelloWorld头文件中声明所要执行的函数:

void Move(float dt);  

注意方法的参数格式!

然后在源文件实现:

void HelloWorld::Move(float dt)  
{  
    CCLOG("hello hello");  
} 


在需要启动改定时器的地方调用scheduleUpdate以开启该定时器:

this->schedule(schedule_selector(HelloWorld::Move), 1.0f); 
//每隔1.0f执行一次,省略参数则表示每帧都要执行 

运行程序你就可以看到每隔1.0秒控制台中有“hello hello"被输出。

 

2.scheduleUpdate

功能描述:每帧都执行一次Update方法

加入当前节点后,程序会每帧都会自动执行一次默认的Update函数。(注:一定是Update函数哦,若想调用其他自己命名的函数则使用schedule)

看例子,走起。

首先在HelloWord类的头文件中声明Update函数:

void Update(float dt);   //注意参数类型 


 

然后在HelloWorld类源文件中实现函数Update:

void HelloWorld::Update(float dt)  
{  
    CCLOG("hello hello");  
} 



在需要启动改定时器的地方调用scheduleUpdate以开启该定时器:

this->scheduleUpdate();

 

运行程序你就可以看到控制台中不断地有“hello hello"被输出。

 

3.scheduleOnce

功能描述:在几秒之后执行指定方法,并且只会执行一次。

我们就执行上面所写的Move函数吧。

this->scheduleOnce(schedule_selector(HelloWorld::Move), 1.0f); //在1.0f之后执行,并且只执行一次。 

运行一下,“hello hello”只是被打印了一次就完了……

ok,定时器的调用已经讲完了,大家不妨自己写一些函数体验一下,自己动手,丰衣足食。

 

4.停止定时器

1、停止执行自己定义的函数定时器:

this->unschedule(schedule_selector(HelloWorld::Move));  

2、停止默认定时器:

this->unscheduleUpdate();  


3、停止所有定时器:

this->unscheduleAllSelectors();  



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值