1
我需要在游戏中检测我想要做的游戏中的长时间触摸。我该怎么做?
我面临的其他问题是限制同时触摸。即如果用户一个接一个地触及两次以上,则精灵不会跳跃。
也是他们的一种方式,我可以添加触摸持续时间因素的精灵跳跃的高度?检测长时间触摸
谢谢
我需要在游戏中检测我想要做的游戏中的长时间触摸。我该怎么做?
我面临的其他问题是限制同时触摸。即如果用户一个接一个地触及两次以上,则精灵不会跳跃。
也是他们的一种方式,我可以添加触摸持续时间因素的精灵跳跃的高度?检测长时间触摸
谢谢
你如何抓住你的触摸?我总是用下面的方法:
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
- (void)ccTouchMoved:(UITouch *)touchx withEvent:(UIEvent *)event
- (void)ccTouchEnded:(UITouch *)touchx withEvent:(UIEvent *)event
而在这些方法,您可能需要完全控制所有的触摸。例如记住触摸启动的时间:
self.startTime = [NSDate date];
一个实例变量开始时间,或者检查是否触摸属于某个对象:
CGRectContainsPoint(self.rect, [self convertTouchToNodeSpaceAR:touch]);
这样你就可以轻松实现你的触摸逻辑你喜欢的方式...
一个好办法做到这一点 - 我发现 - 游戏,喜欢的对象中定义的所有必需的变量...
@interface Enemy : CCSprite <CCTargetedTouchDelegate> {
EnemyState state;
NSInteger enemyID;
NSDate *startTime;
NSDate *endTime;
UITouch *lastTouch;
添加了使用混凝土示例代码ccTouchBegan:
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
D_DBG (@"ENEMY ID %i",self.enemyID);
//implement your logic if a touch for this enemy is allowed or not
if (![self.delegate touchIsAllowed: enemyID touch: touch]) return NO;
//if the enemy is untouched, then may be touched
if ((state == kEnemyStateUngrabbed) && (![self containsTouchLocation:touch])) return NO;
state = kEnemyStateGrabbed;
self.startTime = [NSDate date];
[self.delegate informAboutEnemyStarted: self.enemyID startTime: self.startTime atPoint: self.position];
return YES;
}
Thanks.But如何开始时间表示触摸的开始? – Nitish 2011-04-25 10:10:26
In - (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)事件 您会发现被触摸的对象,然后将其设置为可变的startTime。 - (void)ccTouchEnded:(UITouch *)touchx withEvent:(UIEvent *)事件结束时相同。你只需要自己发送每一个触摸,并检查是什么意思。但这几乎自动完成,如果你使用这些方法... ... - >不要忘记\t \t [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:theEnemy优先级:0 swallowsTouches:YES];因此,敌人可以吞噬敌人的地方是敌人敌人 – user387184 2011-04-25 10:17:18
Thanks.I得到你所说的。让我执行上述。 – Nitish 2011-04-25 10:22:47