有什麼方法可以限制用戶手勢的持續時間嗎?例如,用戶可以拖動一個精靈,但從cctouch開始,它只能持續3秒。持續時間過後,應用程序將自動觸發cctouch結束方法。如何限制觸摸持續時間?
1
A
回答
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];
}
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);
...
}
相關問題
- 1. UITableviewCell中的觸摸持續時間
- 2. 如何知道cocos2d中的觸摸持續時間?
- 3. 持續的手勢/控制觸摸
- 4. 觸摸後持續運動?
- 5. Unity持續觸摸檢測
- 6. videoMaximumDuration不會限制持續時間
- 7. 限制視頻持續時間
- 8. jQuery UI可排序觸摸持續時間
- 9. 在javascript中獲取觸摸的持續時間
- 10. 更新帶有離子觸摸事件的moment.js持續時間
- 11. LibGDX的觸摸持續時間重複相同的東西?
- 12. 在ActiveRecord中禁止觸摸塊的持續時間
- 13. 檢測iOS中的觸摸ID掃描持續時間
- 14. 如何限制PhoneGap上捕捉視頻的持續時間?
- 15. 如何限制Android 7中MediaStore的持續時間
- 16. 觸摸和觸摸之間的時間
- 17. 如何限制觸摸輸入?
- 18. UIView:如何專門限制觸摸
- 19. 如何提取只包含持續時間的持續時間?
- 20. 持續時間
- 21. 如何檢測Activity上的5秒持續觸摸事件?
- 22. 對持續觸摸採取行動,而不是僅在觸及時觸發:
- 23. HTTP持續連接限制
- 24. 時間片持續時間
- 25. Evernote API沙盒速率限制持續時間大於15秒
- 26. 直播視頻持續時間/長度限制
- 27. 在JavaScript中限制振盪器的持續時間問題
- 28. Asp.Net MVC - 全侷限制請求持續時間
- 29. iOS對touchesbegan的持續時間有限制嗎?
- 30. 限制在Qt中彈出的持續時間顯示
尼斯回答,我是新來的科科斯,我不知道有關NSTimers。謝謝 – 2013-04-22 18:21:04