触摸cocos2d?

时间:2009-05-20 20:12:53

标签: iphone sdk cocos2d-iphone

Cocos2d问题??

如何更改触控类型?看下面

image = [MenuItemImage itemFromNormalImage:@"image1.png" selectedImage:@"image2.png" target:self selector:@selector(step1:)];
    Menu *menu = [Menu menuWithItems:image, nil];
    image.position = cpv( -135, -185);
    [self addChild: menu z:2]

step1是一个空格,定义为稍后在代码中执行某些操作。我的问题不是step1不起作用,我的问题是当用户触摸内部按钮时step1进入。当用户触摸内部按钮时,我希望它能够工作。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

目前,MenuItem无法响应“触摸开始”,并且只是硬编码才能响应“触摸结束”。

在Menu.m中,从第105行开始,您将看到ccTouchesBegan声明。

如果要修改Menu的当前行为,可以将其子类化为:

@interface MenuDown: Menu
{
}
@end

@implementation MenuDown
-(BOOL)ccTouchesBegan:(UITouch *)touches withEvent:(UIEvent *)event {
    [self ccTouchesBegan:touches withEvent: event];
    if(item) { [item unselected]; [item activate]; }
}
@end

这是未经测试的,但基本上......我只是从ccTouchesEnded中的Menu.m中获取了一些代码,并将其复制到新的MenuDown类的ccTouchesBegan的覆盖版本中。

然后,您可以将菜单定义为:

MenuDown *menu = [MenuDown menuWithItems: image, nil];

这应该 - 给你一个来自Cocos2D MenuItem的'触摸反应开始'的反应......

然而,这并没有真正提出......因为我看不出有什么理由让你想要'按钮'来回应触摸,而不是'最终行动'...因为它写的,菜单当前允许用户按下,然后滑出...取消菜单选择操作。

菜单/ MenuItem不打算用作“触摸反应对象”(即实际游戏对象),如果这是任何机会,你尝试做什么。