DahuangPhoneiOSCocos2D → Scheduled(预定时间)


  共有7535人关注过本帖平板打印复制链接

主题:Scheduled(预定时间)

帅哥哟,离线,有人找我吗?
dahuangphone
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:407 积分:4533 威望:0 精华:0 注册:2012/9/29 7:54:10
Scheduled(预定时间)  发帖心情 Post By:2012/11/21 21:23:02 [只看该作者]

 http://hi.baidu.com/you5a_com/item/e35bb9cf6cae713544941645

每帧都调用:

-(void) scheduleUpdates
{
    [self scheduleUpdate];
}
-(void) update:(ccTime)delta
{
    // 此方法每一帧都会被调用
}

 

使用自定义方法(10秒调用一次):

-(void) scheduleUpdates
{
    [self schedule:@selector(updateTenTimesPerSecond:) interval:0.1f];  //10分钟 = 600
}
-(void) updateTenTimesPerSecond:(ccTime)delta
{
    // 此方法将根据时间间隔来调用,每秒10次

}

 

停止所有选择器(@selector):

[self unscheduleAllSelectors];


停止单个选择器(名称: updateTenTimesPerSecond):

[self unschedule:@selector(updateTenTimesPerSecond:)];


预定选择器只运行一次(_cmd) :

-(void) scheduleUpdates
{
    [self schedule:@selector(tenMinutesElapsed:) interval:600];
}
-(void) tenMinutesElapsed:(ccTime)delta
{
    // 用_cmd关键词停止当前方法的预定

    [self unschedule:_cmd];  //_cmd关键词是当前方法的缩写
}


使用_cmd示例(用_cmd关键词可以让你避免预定(schedule)或者停止预定(unschedule)错误的方法):

-(void) scheduleUpdates {
    // 像之前一样预定第一次更新
    [self schedule:@selector(irregularUpdate:) interval:1];
}
-(void) irregularUpdate:(ccTime)delta {
    // 首先,停止方法调用的预定
    [self unschedule:_cmd];
    // 这里我们用随机数来决定下次调用此方法需要经过的时间
    float nextUpdate = CCRANDOM_0_1() * 10;
    // 然后用_cmd来代替选择器,用新的时间间隔来重新预定方法调用
    [self schedule:_cmd interval:nextUpdate];
}

优先次序调用:

// 在A节点里
-(void) scheduleUpdates {
    [self scheduleUpdate];
}
// 在B节点里
-(void) scheduleUpdates {
    [self scheduleUpdateWithPriority:1];
}
// 在C节点里
-(void) scheduleUpdates {
    [self scheduleUpdateWithPriority:-1];
}


 回到顶部