Cocos2d v3.0一次访问多个触摸的位置

时间:2014-04-27 22:22:45

标签: ios objective-c cocos2d-iphone

我已经研究了如何在cocos2d v3中使用多个触摸,我意识到有必要这样做

self.multipleTouchEnabled = YES;

为了获得多次触摸。我已经这样做了,我只是不确定如何一次访问所有触摸的位置。在你可以隔离NSSet之类的东西并获得触摸1之前,触摸2等;但是现在我不确定如何做到这一点。

如果它有帮助,我正在尝试进行捏/缩放,我知道该怎么做,但我不知道如何访问触摸的位置。

我知道只需触摸一下就可以轻松获得该位置,但对于两者而言,我都没有办法实现这一目标。对不起,漫无边际的基本相同!

我还听说你可以有一个计数器变量来查看当时发生了多少次触摸,但这似乎效率低下,你仍然无法获得所有触摸的位置。

在此先感谢,我非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

也许我的方式不是最好的方式,但它有效。 只需在存储触摸的位置创建一个NSMutableArray,然后就可以获得两个位置。

NSMutableArray *array = [[NSMutableArray alloc]init];

在touchBegan和touchEnded方法中:

-(void) touchBegan:(UITouch *)touch withEvent:(UIEvent *)event{
[array addObject:touch]; //add new touch to array

}
-(void) touchEnded:(UITouch *)touch withEvent:(UIEvent *)event{
 [array removeObject:touch]; //remove touch that ended
}

在你的方法中获得职位:

//EXAMPLE.

if (array.count > 1){ //check that there are two touches
CGPoint point1 = [array[0] locationInNode:self];
CGPoint point2 = [array[1] locationInNode:self];
}else{ //I suppose there are ONE or TWO touches, not more.
CGPoint point1 = [array[0] locationInNode:self];
}

我认为这是正确的。如果您有任何问题,请告诉我。