gpt4 book ai didi

ios - 多点触控的触摸跟踪

转载 作者:行者123 更新时间:2023-11-29 03:43:51 28 4
gpt4 key购买 nike

我正在使用 GLKit(不使用 Cocos2d)创建一个游戏,我基本上需要两个“按钮” - 每个按钮 250 点宽,并在横向模式下放置在相对的两侧。 MultipleTouch 是 YES,因为我需要跟踪不止一次触摸。

在touchesbegan中,我确定touch.x <= 250(按钮1)或>= view.bounds.size.width - 250(按钮2)。基于此,我将 BOOL 设置为 YES 来确定状态。

在 Touchsend 中,我想知道用户何时不再“按下”按钮 1 或按钮 2。问题是 - 我不能再测试 View 中触摸发生的位置,因为用户可能已经移动了手指,所以它不再位于最初按下的“按钮”上方。这意味着,如果用户通过按下按钮 1 开始触摸,但将手指移到按钮边界之外,然后抬起手指 - 状态仍为"is"。

是否有一种好方法可以可靠地跟踪 TouchesEnded 中触摸首次开始的位置?任何指向源代码的指针都将受到高度赞赏。

编辑:这是我创建的代码:

请注意,我知道这段代码是错误的,因为它只跟踪一次触摸。但是,我想要实现的是当用户按下左按钮并将取景器移出该按钮时..我需要知道 TouchsEnded 中的触摸相当于之前在按钮中开始的触摸,以便我知道该按钮不再被“按下”。

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];

// Determine where the touch happened
CGPoint p = [touch locationInView:self.view];

// If the user pressed the left gutter then break
if ( p.x <= 250 )
isBreaking = YES;

// If the user pressed the right gutter then accelerate
if ( p.x >= (self.view.bounds.size.width - 250) )
isAccelerating = YES;
}


- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];

// Determine where the touch happened
CGPoint p = [touch locationInView:self.view];

// If the user pressed the left gutter then stop break
if ( p.x <= 250 )
isBreaking = NO;

// If the user pressed the right gutter then stop accelerate
if ( p.x >= (self.view.bounds.size.width - 250) )
isAccelerating = NO;
}

最佳答案

我想我找到了解决方案,尽管我还没有测试它:http://www.blumtnwerx.com/blog/2009/06/taming-touch-multi-touch-on-the-iphone/

我真正需要知道的是文档:

A UITouch object is persistent throughout a multi-touch sequence. You should never retain an UITouch object when handling an event. If you need to keep information about a touch from one phase to another, you should copy that information from the UITouch object.

关于ios - 多点触控的触摸跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17991426/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com