有什么方法可以限制用户手势的持续时间吗?例如,用户可以拖动一个精灵,但从 cctouch 开始,它只能持续 3 秒。持续时间过后,应用程序将自动触发 cctouch end 方法。
问问题
129 次
2 回答
2
我建议使用块来安排计时器。避免在 Cocos2D 中使用 NSTimer,因为它不允许内置的暂停/恢复功能。
安排如下:
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
[[self scheduler] scheduleBlockForKey:@"menu" target:self interval:3.0f repeat:0 delay:0 paused:NO block:^(ccTime dt)
{
// perform end of touch actions here
}];
}
如果用户在调用计时器之前执行您想要的任何操作(很可能是 ccTouchEnded/ccTouchCancelled),请务必取消调度该块:
- (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event
{
[[self scheduler] unscheduleBlockForKey:@"menu" target:self];
}
于 2013-04-22T17:38:38.330 回答
2
是的,这是实现这一目标的简单策略。您可以在用户开始意识到手势时启动计时器,并在计时器到达时停止它。
-(void) timerDidTick:(NSTimer *)theTimer{
cpMouseRelease(mouse);
}
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
NSTimer *aTimer = [NSTimer timerWithTimeInterval:3.0 target:self selector:@selector(timerDidTick:) userInfo:nil repeats:NO] ;
[[NSRunLoop mainRunLoop] addTimer:aTimer forMode:NSRunLoopCommonModes];
CGPoint touchLocation = [self convertTouchToNodeSpace:touch];
cpMouseGrab(mouse, touchLocation, false);
...
}
于 2013-04-22T16:23:12.117 回答