Ios can';t在CCNode上检测触摸-cocos2d v3.0
我最近开始探索cocos2dv3.0。我正在尝试一些基本的东西,但遇到了一些麻烦 基本上,我正在子类化一个CCSprite来创建正方形对象。在那之后,将方形对象添加到我的HelloWorld场景中,我想在我的方形精灵上获得触摸。由于某种原因,它不起作用 这是密码 --头文件Ios can';t在CCNode上检测触摸-cocos2d v3.0,ios,objective-c,cocos2d-iphone,Ios,Objective C,Cocos2d Iphone,我最近开始探索cocos2dv3.0。我正在尝试一些基本的东西,但遇到了一些麻烦 基本上,我正在子类化一个CCSprite来创建正方形对象。在那之后,将方形对象添加到我的HelloWorld场景中,我想在我的方形精灵上获得触摸。由于某种原因,它不起作用 这是密码 --头文件 #import "CCSprite.h" @interface Square : CCSprite @end implementaion file #import "Square.h" #import "cocos2d.
#import "CCSprite.h"
@interface Square : CCSprite
@end
implementaion file
#import "Square.h"
#import "cocos2d.h"
@implementation Square
-(id)init {
// Apple recommend assigning self with supers return value
self = [super init];
if (!self) return (nil);
self.contentSize = [[CCDirector sharedDirector] viewSize];
self.userInteractionEnabled = YES;
return self;
}
-(void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
CCLOG(@"touch received");
}
@end
下面是helloworldinit
方法
- (id)init
{
// Apple recommend assigning self with supers return value
self = [super init];
if (!self) return(nil);
Square *_square = [[Square alloc] initWithImageNamed:@"background.png"];
[_square setPosition:CGPointZero];
[self addChild:_square];
// done
return self;
}
当我运行代码时,我可以看到屏幕上的精灵,但当我点击它时,什么也没有发生,触摸开始时,从未被调用。我错过了什么 问题在于您没有覆盖
CCSprite
子类中指定的初始值设定项。如果使用initWithImageNamed:
初始化精灵,将永远不会调用您正在实现的init
方法,也永远不会激活触摸处理。您必须覆盖的指定初始值设定项为:
- (id)initWithTexture:(CCTexture *)texture rect:(CGRect)rect rotated:(BOOL)rotated;
这是保证每次初始化CCSprite
时调用的唯一init
方法
无论哪种方式,我都建议在onEnter
方法中打开触摸处理,该方法在场景中显示精灵时调用:
- (void)onEnter {
[super onEnter];
self.userInteractionEnabled = TRUE;
}
您可以在cocos2d3.0中找到有关触摸处理的完整教程。谢谢,这很有效!我在哪里可以了解更多关于此类信息的信息,比如其他类的指定初始值设定项是(id)initWithTexture:(CCTexture*)texture rect:(CGRect)rect rotated:(BOOL)rotated;CCSprite唯一指定的初始值设定项?@lionserdar:这在cocos2d版本0.9到2.1.x中是正确的,但我不知道这个警告是否仍然适用于3.0:当覆盖任何cocos的onSomething方法时,不要忘记[super-onSomething]。@YvesLeBorg谢谢,我确实忘记了调用[super-Oneter]@lionserdar大部分内容都在API文档和头文件中。MakeGamesWithUs正在编写一份即将发布的附加文档,该文档将涵盖所有这些主题!是的,我知道你们的作品。随着新教程的出现,网站每天都在变得更好。在我深入研究v3.0之前,我浏览了你们的作品。我认为,如果你们能在教程结束时提供示例完成项目,那就更好了。目标是否提供了一些提示和技巧?还是完整的教程?谢谢