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文件
主要使用了的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]]];