【问题标题】:How to detect multi-touch in sequence?如何按顺序检测多点触控?
【发布时间】:2011-03-31 03:21:34
【问题描述】:

我尝试按顺序跟踪多点触控,这是我所做的:

1.创建一个cocos2d应用 2.启用多点触控 3.在touchesBegin中添加代码:

- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSSet *allTouches = [event allTouches];
    for (int i = 0; i < allTouches.count; i++) {

        UITouch *touch = [[allTouches allObjects] objectAtIndex:i];
        CGPoint touchLocation = [touch locationInView: [touch view]];
        CGPoint location = [[CCDirector sharedDirector]
                                              convertToGL:touchLocation];
        NSLog(@"allTouches %d %0.1f, %0.1f", (i + 1), location.x, location.y);
    }
}

我一开始尝试了“[touches allObjects]”,但这需要 多点触控同时进行。我在这里想要的是 一次接收多点触控。所以我使用了[event allTouches];

4.我一次将一根手指放在手指上来测试代码,但是 输出序列似乎是随机的(第一根手指带有小 xVal 和第二根手指) xVal大,间隔大于2s):

result 1:
2011-03-31 10:54:35.847 MultiTouchDemo[2788:207] allTouches 1 58.0, 458.0
2011-03-31 10:54:38.045 MultiTouchDemo[2788:207] allTouches 1 56.0, 453.0
2011-03-31 10:54:38.046 MultiTouchDemo[2788:207] allTouches 2 930.0, 429.0

result 2:
2011-03-31 10:55:11.659 MultiTouchDemo[2788:207] allTouches 1 86.0, 415.0
2011-03-31 10:55:13.378 MultiTouchDemo[2788:207] allTouches 1 965.0, 409.0
2011-03-31 10:55:13.380 MultiTouchDemo[2788:207] allTouches 2 84.0, 413.0

result 3:
2011-03-31 10:55:32.991 MultiTouchDemo[2788:207] allTouches 1 76.0, 453.0
2011-03-31 10:55:34.630 MultiTouchDemo[2788:207] allTouches 1 877.0, 430.0
2011-03-31 10:55:34.631 MultiTouchDemo[2788:207] allTouches 2 76.0, 455.0

result 4:
2011-03-31 10:55:45.960 MultiTouchDemo[2788:207] allTouches 1 94.0, 440.0
2011-03-31 10:55:47.134 MultiTouchDemo[2788:207] allTouches 1 92.0, 438.0
2011-03-31 10:55:47.136 MultiTouchDemo[2788:207] allTouches 2 934.0, 358.0

所以你可以在 [allTouches allObjects] 中看到第二根手指的索引 似乎一直在变化。

如果我想让一个游戏在单个设备上支持多人游戏, 我想追踪他们执行的动作,我怎么能这样做 所有这些随机的位置?

希望有人能帮帮我,谢谢^_^

【问题讨论】:

    标签: cocos2d-iphone multi-touch


    【解决方案1】:

    您可以自己存储触摸。在第一次调用 ccTouchesBegan 时,将所有触摸存储在您的列表中。在随后的调用中,将列表中尚未包含的任何触摸附加到列表的末尾。然后当调用 ccTouchesEnded 时,擦除列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多