如何从cocos2d中的CCProgressTimer获取时间或百分比?

时间:2013-02-16 12:01:49

标签: objective-c timer cocos2d-iphone progress-bar

我已经实施了一个栏来显示游戏中玩家的剩余时间。如果时间变为零,我想用if循环设置错误的结果。但是如何在某个瞬间获得百分比?如何确认酒吧是否为空?谢谢

CCProgressFromTo *to1 = [CCProgressFromTo actionWithDuration:MaxTime from:100 to:0];
bar = [CCProgressTimer progressWithFile:@"barra.png"];
bar.type = kCCProgressTimerTypeHorizontalBarLR;
[bar setPosition:ccp(size.width - 250 , size.height - 18)];
float per= ?????

if (per==0)
{
    [self performSelector:@selector(wrong) withObject:nil];
}

2 个答案:

答案 0 :(得分:2)

我试过这个(cocos2d版本2.x)。精灵是一个水平滑块轨道,进度计时器上的设置将为您提供从右到左的“完全100”,在0处为空。

    _pt = [CCProgressTimer progressWithSprite:[CCSprite spriteWithFile:@"slider_track.png"]];
    CCProgressFromTo *ft = [CCProgressFromTo actionWithDuration:20 from:100 to:0];
    _pt.position= ccp(kScreenWidth/2, kScreenHeight/2);
    _pt.type=kCCProgressTimerTypeBar;
    _pt.reverseDirection= NO;
    _pt.midpoint=ccp(0,1);
    _pt.barChangeRate= ccp(1,0);
    [self addChild:_pt];
    [_pt runAction:ft];
    [self schedule:@selector(watchProgressTimer:) interval:1.0];


-(void) watchProgressTimer:(ccTime) dt {
    MPLOG(@"Progress timer percentage is %f ",_pt.percentage);
    if(_pt.percentage==0.f){
        [self unschedule:@selector(watchProgressTimer:)];
        [self removeChild:_pt cleanup:YES];
        [self dowhateverYouDoAtZero] ;
    }
}

-(void) dowhateverYouDoAtZero{
    // your business logic for expired timer here
    MPLOG(@"Bang , time's up !!!");
}

在控制台上给出了这个

- [MPGameSequencer watchProgressTimer:]:进度计时器百分比为95.254395 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为90.169464 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为85.168495 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为79.918976 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为74.670525 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为69.669678 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为64.667480 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为59.419960 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为54.168777 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为49.167599 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为43.920143 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为38.919609 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为33.919609 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为28.917831 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为23.669678 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为18.667908 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为13.418236 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为8.168266 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为3.167412 - [MPGameSequencer watchProgressTimer:]:进度计时器百分比为0.000000 - [MPGameSequencer dowhateverYouDoAtZero]:砰的一声,时间到了!

答案 1 :(得分:0)

在cocos2d-x中你会得到像这样的场景

bar->getPresentage();