我只是想在ccTouchesMoved中安排一次更新方法,但是当我添加这个
时if (isRotating == YES)
{
gTimer = 20;
[self schedule:@selector(g:) interval:1];
}
进入ccTouchesMove,每次移动触摸时都会调用它。有没有办法将它保存在ccTouchesMoved中并且只调用一次?
isRotating
在ccTouchesMoved
中设置为YES。
代码:
- (void)g:(ccTime)delta
{
gTimer--;
if (gTimer == 0 && isRotating == YES)
{
[self unschedule:@selector(g:)];
}
}
我想做的就是旋转精灵一段固定的间隔,然后在计时器为0时将其删除,但我只想在触摸当前正在旋转精灵的情况下将其删除。
这里是暂停/恢复计时器的地方。如果玩家开始旋转精灵然后抬起他们的手指,计时器应该暂停,当他们再次触摸/旋转精灵时,计时器应该恢复。
如果我的解释不清楚,请随时请我详细说明。
计时器方法:
在.h
ccTimer gTimer;
在.m
- (void)g:(ccTime)delta
{
gTimer--;
if (gTimer == 0 && isRotating == YES)
{
[self unschedule:@selector(g:)];
}
}
另外,我用
设置了计时器if (isRotating == YES)
{
gTimer = 20;
[self schedule:@selector(g:) interval:1];
}
非常感谢任何帮助!
答案 0 :(得分:0)
把BOOL放在你的班级中......并浮动myTimer ......
-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
touched = YES;
}
-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
isRotating = YES;
if(touched && isRotating)
{
gTimer = 20;
[self schedule:@selector(g:) interval:0.03];
}
}
-(void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
touched = NO;
[self unschedule:@selector(g:)];
}
- (void)g:(ccTime)delta
{
myTimer +=delta;
if (myTimer >= gTimer && isRotating == YES)
{
[self unschedule:@selector(g:)];
}
}
答案 1 :(得分:0)
暂停我刚刚使用的计时器
[self unschedule:@selector(g:)];
然后恢复它我用
[self schedule:@selector(g:)];
另外,为了安排ccTouchesMoved中的更新,我只是检查手指是否在没有抬起的情况下停止移动。