为什么我的Cocos2d测试应用程序不会触发“touchesBegan”事件?

时间:2012-03-01 20:33:56

标签: objective-c cocos2d-iphone

在我的app委托中,我确定自己有一行:

    [glView setMultipleTouchEnabled: YES];

我有一个简单的图层,只是为了弄清楚多点触控是如何工作的。 .mm文件看起来像:

#import "TestLayer.h"

@implementation TestLayer
-(id) init
{
    if( (self=[super init])) {
        [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
    }
    return self;
}

-(void) draw{
     [super draw];
    glColor4f(1.0, 0.0, 0.0, 0.35);
    glLineWidth(6.0f);
    ccDrawCircle(ccp(500,500), 250,CC_DEGREES_TO_RADIANS(360), 60,YES);

}

-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"got some touches");
}

-(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"some touches moved.");
}

-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
    NSLog(@"a touch began");
    return FALSE;
}
@end

当我触摸屏幕时,我总是看到“触摸开始”,但无论我如何触摸它(模拟器或实际设备),我都看不到“有些触摸移动”或“有些触摸”。

我需要做些什么才能使多点触控工作?

具体来说,我只是尝试做基本的捏合缩放功能......我听说有一些适用于iPhone的手势识别器......它适用于Coco2ds吗?即使我无法触发简单的多点触控事件,它会起作用吗?

2 个答案:

答案 0 :(得分:1)

UIGestureRecognizers绝对适用于Cocos2D,我个人使用它们,你只需要使用以下方法将它们添加到正确的视图中:

[[[CCDirector sharedDirector] openGLView] addGestureRecognizer:myGestureRecognizer];

关于你的触摸,我猜你是否为你正在工作的场景启用了它们?

scene.isTouchEnabled = YES;

在任何情况下,您都不应该使用addTargetDelegate方法,请查看here

答案 1 :(得分:1)

self.isTouchEnabled = YES;添加到您的初始

并且手势识别器会查看其他答案