首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按顺序检测多点触控?

如何按顺序检测多点触控?
EN

Stack Overflow用户
提问于 2011-03-31 11:21:35
回答 1查看 931关注 0票数 0

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

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

代码语言:javascript
复制
- (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较大,间隔大于2秒):

代码语言:javascript
复制
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中食指的食指似乎一直在变化。

如果我想让一款游戏在一台设备上支持多玩家,并且我想跟踪他们执行的移动,我如何使用所有这些随机的pos来做到这一点?

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

EN

回答 1

Stack Overflow用户

发布于 2011-03-31 14:23:07

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5494996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档