objective C - 通过点击精灵生成字符串,这可能吗?

时间:2010-11-21 02:21:54

标签: iphone objective-c cocos2d-iphone sprite

我将描述这个问题,我的精灵都是字母表中的字母,我想知道当你用一个单词触摸字母时我怎么能这样做,我可以生成一个单词的字符串并通过它来比较一个有plist的字符串。我需要任何可以帮助我的想法,谢谢。

2 个答案:

答案 0 :(得分:1)

是的,这是可能的。测试触摸的一种方法是使用CCTouchDispatcher。

概述

  1. 确定哪个班级会监控您的字母精灵的触摸。
  2. 使该课程成为CCTargetedTouchDelegate的代表。
  3. 向该类添加代码以向CCTouchDispatcher注册。
  4. 向该类添加代码以使用CCTouchDispatcher取消注册。
  5. 将触控回调方法添加到您的班级。在触控回调方法中,您必须添加代码以确定触摸了哪个精灵。
  6. 从Dispatcher注册和注销

    [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
    [[CCTouchDispatcher sharedDispatcher] removeDelegate:self];
    

    实施的回调方法

    - (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
    - (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
    - (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event
    

    用于测试的示例代码如果触摸精灵

    - (BOOL) isTouch:(UITouch *)touch InSprite:(CCSprite *)sprite 
    {
        CGPoint touchLocation = [touch locationInView: [touch view]];
        touchLocation = [[CCDirector sharedDirector] convertToGL: touchLocation];
    
        CGPoint localLocation = [sprite convertToNodeSpace:touchLocation];
        CGRect spriteRect = [sprite textureRect];
        spriteRect.origin = CGPointZero;
    
        if(CGRectContainsPoint(spriteRect, localLocation))
        {
            return YES;
        }
    
        return NO;
    }
    

答案 1 :(得分:0)

使用CCMenuItem可能会更简单(它也可以从精灵创建),因为它已经可以触摸了。当你触摸CCMenuItem时,你所要做的就是指定一个函数被调用。

查看官方编程指南: http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:lesson_3._menus_and_scenes