我试图制作一种免费的亚军游戏。每次点击屏幕时,我都会通过将整数设置为30左右来进行角色跳转,并使用CGPointMake()
将角色向上移动到屏幕上。然后当玩家点击屏幕时我有一个计时器启动,该屏幕将角色拉下来直到他到达某一点(y = 260)。然后计时器失效并且角色的向下运动停止。
这种情况一直持续,并且在角色到达y = 260之前点击屏幕,效果非常好。这让他挺身而出,速度非常快,而且他并没有像他应该的那样停在y = 260。这是我认为导致问题的代码:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
playerMoving = 33;
gravity = [NSTimer scheduledTimerWithTimeInterval:.2
target:self
selector:@selector(playerJump)
userInfo:nil
repeats:YES];
}
每当我双击屏幕时,计时器再次被激活,即使它已被激活,这就是我认为导致问题的原因。
有没有办法不让玩家第二次点击屏幕直到角色达到y = 260(所以玩家基本上不能跳过双跳)?
答案 0 :(得分:0)
如果计时器已存在,请不要创建计时器。完成计时器后,取出变量,并在再次创建之前检查它。
- (void)playerJump:(NSTimer *)tim
{
// Do stuff...
if( /* Done repeating */ ){
[gravity invalidate];
gravity = nil;
}
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
playerMoving = 33;
if( !gravity ){
gravity = [NSTimer scheduledTimerWithTimeInterval:.2
target:self
selector:@selector(playerJump:)
userInfo:nil
repeats:YES];
}
}