2010-03-20 25 views
1

我在我的应用程序中有两个精灵。两者都应该启用触摸并且两个触摸都是彼此独立的。如果我触摸屏幕(不是精灵),它应该有不同的触摸。我的问题是全部三个sprite1,sprite2,剩余的屏幕应该有独立的触摸。但我的计划正在采取所有的触摸。我怎样才能使他们成为我所需要的?我们如何检测精灵的触摸?

谢谢。

+0

您是否要求多点触控帮助?或者当他们中的一个被触摸时,他们都注册了一个触摸吗? –

+0

我在问多点触控。每个人在接触时都应该调用自己的行为或方法。 –

回答

1

要做到这一点,首先你需要启用多点触控的应用程序:

[self setMultipleTouchEnabled:YES]; 

然后识别触摸,你可以使用类似下面的代码:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    for (UITouch* Touch in touches) 
    { 
     printf("Touch began %p, tapcount %d\n", (void *) Touch, [Touch tapCount]); 
     fflush(stdout); 
    } 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    for (UITouch* Touch in touches) 
    { 
     printf("Touch moved %p, tapcount %d\n", (void*)Touch, [Touch tapCount]); 
     fflush(stdout); 
    } 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    for (UITouch* Touch in touches) 
    { 
     printf("Touch ended %p, tapcount %d\n", (void*)Touch, [Touch tapCount]); 
     fflush(stdout); 
    } 
} 

所以(void *)触摸,您可以识别特定的触摸指针,直到实际“结束”该触摸才会更改。

例如,如果您触摸屏幕,即使您移动该手指,也会得到一个将保留相同内存地址的触摸实例,直到您释放它为止。祝你好运,我完全用这个代码的基础来进行多点触控精灵管理。