gpt4 book ai didi

iphone - iPhone 的 cocos2D 和触摸检测问题

转载 作者:行者123 更新时间:2023-12-03 18:26:45 25 4
gpt4 key购买 nike

我就是不明白。我使用cocos2d在iPhone/Pod上开发一个小游戏。该框架很棒,但我在触摸检测方面失败了。我读到您只需要在 CocosNode 子类的类的实现中覆盖适当的函数(例如“touchesBegan”)。但这不起作用。我可能做错了什么?

功能:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{NSLog(@"tickle, hihi!");}

我完全理解错了吗?

最佳答案

Layer 是唯一可以触摸的 cocos2d 类。

诀窍在于,Layer 的所有实例都会一个接一个地传递触摸事件,因此您的代码必须处理此问题。

我是这样做的:

-(BOOL)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView: [touch view]];
CGPoint cLoc = [[Director sharedDirector] convertCoordinate: location];

float labelX = self.position.x - HALF_WIDTH;
float labelY = self.position.y - HALF_WIDTH;
float labelXWidth = labelX + WIDTH;
float labelYHeight = labelY + WIDTH;

if( labelX < cLoc.x &&
labelY < cLoc.y &&
labelXWidth > cLoc.x &&
labelYHeight > cLoc.y){
NSLog(@"WE ARE TOUCHED AND I AM A %@", self.labelString);
return kEventHandled;
} else {
return kEventIgnored;
}

}

请注意,cocos2d 库有一个“ccTouchesEnded”实现,而不是 Apple 标准。它允许您返回一个 BOOL 指示您是否处理了该事件。

祝你好运!

关于iphone - iPhone 的 cocos2D 和触摸检测问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/377785/

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