gpt4 book ai didi

ios - 如何区分点击和按住?

转载 作者:行者123 更新时间:2023-11-29 12:37:22 25 4
gpt4 key购买 nike

在我的游戏中,我有两种手势;单击并按住。当我将手指放在屏幕上时,它会导致 touchBegan:(UITouch *)touch withEvent:(UIEvent *)event 在我的点击方法也被调用的地方被调用,因此两个手势都被调用。我怎样才能避免这个问题?我必须使用 UIGestureRecognizers 还是有办法只使用内置的 cocos2d 方法?我需要专门调用这些手势,而不是相互组合。

typedef NS_ENUM(NSUInteger, BPMovementState) {
kTouchUp, //Finger is not on the screen
kTouchDown //Finger is on the screen
};

@implementation HelloWorldScene
{
CCSprite *_hero;
BPMovementState _touchState;
}

- (instancetype)init

self = [super init];
if (!self) return(nil);

// Enable touch handling on scene node
self.userInteractionEnabled = YES;

_touchState = kTouchUp;

return self;
}

- (void)fixedUpdate:(CCTime)delta{

if(_touchState == kTouchDown){
//_hero slide
_hero.position = ccp(_hero.position.x + 1, _hero.position.y);
}

}

-(void) touchBegan:(UITouch *)touch withEvent:(UIEvent *)event {

_touchState = kTouchDown;
if(touch.tapCount == 1)
[_hero jump]

}

- (void)touchEnded:(UITouch *)touch withEvent:(UIEvent *)event{


_touchState = kTouchUp;

}

最佳答案

可以通过以下方式实现。

在头文件中定义一个计时器,即 touchTimer

在touchBegan开始计时

touchTimer = [NSTimer scheduledTimerWithTimeInterval:delay target:self selector:@selector(touchHasBeenHeld:) userInfo:nil repeats:NO];

如果计时器到期并且选择器 -touchHasBeenHeld id 在触摸被释放之前被调用。它的举行事件。在这里,您还使计时器无效。

否则如果 -touchEnded 被调用并且计时器仍然有效,则它是一个触摸事件。您再次使计时器无效。

关于ios - 如何区分点击和按住?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25943146/

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