在cocos2d中,对Sprite进行触摸操作

4

当我的精灵被触摸时,我希望它们执行某些操作,这是操作方法:

-(void) spriteEffect
{
    CCSprite *actionEffect = avatar;
    id jump = [CCJumpBy actionWithDuration:1 position: ccp(0, 0) height:50 jumps:1];
    id sequence = [CCSequence actions: jump, nil];
    [actionEffect runAction:sequence];
}

现在,我的问题是我不知道如何让触摸动作与精灵相连;我应该使用这个吗?

- (void)ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event

Msp是一个带有.plist的.png图像。
3个回答

2
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{

    UITouch *touch = [touches anyObject];

    if ([touch tapCount] == 1) 
    {
        // Add Your Action
    }

}

或者

UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(SpriteThouch)];
[[[CCDirector sharedDirector] openGLView] addGestureRecognizer:gr];

并调用方法SpriteThouch

-(void)SpriteThouch
{
  // code here 

}

我选择精灵来玩游戏,我只想在它们被触摸时添加一个动作,只是为了让它们更好看,但不是在它们被选中时。看看这张图片,你就会明白: http://images4.wikia.nocookie.net/fantendo/images/3/35/Character_Selection_MKW2!!.png假设你选择了路易吉,路易吉出现在下面,我想添加一个使路易吉跳跃的动作。 - Vergmort
当我使用'UITapGestureRecognizer'时,它告诉我CCSprite可能无法响应'addGestureRecognizer'。 - Vergmort
首先创建 CCSprite 对象,然后进行初始化,最后添加...也许可以解决你的问题 :) - iPatel
谢谢 :) 很高兴听到好的建议;但是我已经初始化了CCSprite,我称之为avatar,在方法中调用。 :/ 我应该在initWithMenuScene中使用/放置UITapGestureRecognizer吗? - Vergmort
嘿,Patel,还有一个问题。我应该把UITapGestureRecognizer放在initWithMenuScene中吗?在哪里?也许这就是问题所在... - Vergmort
显示剩余7条评论

0

当我想要处理简单的精灵触摸时,我通常使用CCMenuItemImage

使用以下方法创建菜单项:

itemFromNormalImage:selectedImage:target:selector:

正如您所看到的,您可以传递菜单项的图像(即精灵图像),传递目标(通常是实现操作的self),当菜单项被触摸时,当然还有将被调用的方法(选择器)。

如果您需要更多帮助,请告诉我...


所有的精灵都在那里是什么意思? - giorashc
我有一个包含所有精灵的.png文件,类似于这个:http://fc02.deviantart.net/fs71/f/2011/147/e/5/godzilla_domination_sprites_by_blzofozz-d3h277l.png - Vergmort
哦,现在我明白了。嗯...你可以读取每一个并为每一个创建一个菜单项。我认为菜单是你问题的解决方案,因为你只需要一些按钮被按下,对吧? - giorashc
当您说“跳”时,是指使用精灵表制作动画跳跃,还是使整个图像跳跃? - giorashc
你可以轻松地在 CCMenuItemImage 对象上运行此操作,因为它继承自 CCNode,并拥有跳跃所需的所有属性。 - giorashc
显示剩余3条评论

0

我使用CCNode+SFGestureRecognizers.h (https://github.com/krzysztofzablocki/CCNode-SFGestureRecognizers) 为我的精灵添加手势。

所以你需要做的就是:

  • 导入 CCNode+SFGestureRecognizers.h

  • 添加精灵:CCSprite *button = [CCSprite spriteWithCGImage:....

  • 为精灵添加代码

    button.isTouchEnabled = YES;

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:target action:selector];

    [button addGestureRecognizer:tap];


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接