Skip to content

hailongiPhone/HLMenuItemCoolDown

Repository files navigation

用cocos2d 实现Cooldown Buttons

HLMenuItemCooldown 是带有冷却时间的CCMenuItemImage

使用方式:

由于继承自于CCMenuItemImage,只要当做一个CCMenuItem使用就好。 当前值支持一种实例化对象的方法:(详细见HLMenuItemCooldown.h)

/** 					itemFromNormalImage:selectedImage:lastTimeStamp:interval:block
*
*  @param  value               普通状态下的图标
*  @param  value2              点击选中状态下图标
*  @param  lastTimeStamp       上一次更新时间
*  @param  interval            cd时间间隔
*  @param  block               其参数remainingTime 是这这一次CD的剩余时间,
*                              remainingTime > 0 Cooldown还没有完成
*
*  @return HLMenuItemCoolDown 
*/
+(id) itemFromNormalImage:(NSString*)value 
        selectedImage:(NSString*)value2
        lastTimeStamp:(NSDate *)lastTimeStamp
             interval:(NSTimeInterval)interval
                block:(void(^)(NSTimeInterval remainingTime))block;  

使用时,用该方法实例化对象HLMenuItemCooldown,并加到一个CCMenu中,即可见。

示例代码如下:

HLMenuItemCooldown * coolDown2 = [HLMenuItemCooldown 	itemFromNormalImage:@"cd.png" selectedImage:@"cd.png" 	lastTimeStamp:[NSDate dateWithTimeIntervalSinceNow:-5] interval:20 block:^(NSTimeInterval remainingTime) {
        NSLog(@"coolDownItem = %f",remainingTime);
    }];
CCMenu * menu = [CCMenu menuWithItems:coolDown2, nil];

详细见示例代码中的HelloWorldLayer.m文件

Cooldown效果实现方式:

主要使用了的CCProgressTimer。 分两层处理, 底层显示原图,加灰色。 用相同的图片创建CCProgressTimer,叠加在前面准备好的底层上。 CCProgressTimer运行动画即可看到。

关键代买如下:(详细参加示例代码中:HelloWorldLayer.m)

// How it works? Two Layer

    //The background: a Sprite
	CCSprite * spTmp = [CCSprite spriteWithFile:@"cd.png"];
    spTmp.color = ccGRAY;               // key point
    
    //The foreground: a CCProgressTimer
    CCProgressTimer * pro = [CCProgressTimer progressWithFile:@"cd.png"];
    pro.type = kCCProgressTimerTypeRadialCW;
    pro.percentage = 100;
    pro.position = ccp(50, 160);
    spTmp.position = ccp(50, 160);
    [self addChild:spTmp];
    [self addChild: pro];
    
    [pro runAction:[CCRepeatForever actionWithAction:[CCSequence actions:[CCProgressFromTo actionWithDuration:3 from:0 to:100], [CCDelayTime actionWithDuration:0.5],nil]]];

About

Cooldown Buttons in Cocos2d

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published