如何在运行时获取sprite的Tag值

时间:2013-01-30 08:03:54

标签: objective-c xcode cocoa-touch cocos2d-iphone sprite

我有20个精灵。在MutableArray中添加了所有20个精灵。当我触摸20.中的任何一个精灵时,我想要触摸精灵的标记值。

帮我编写代码。 在此先感谢。

2 个答案:

答案 0 :(得分:0)

这应该相当简单。由于您没有提供任何代码,我会假装它看起来像这样。

for (CCSprite *aSprite in arrayOfSprites){
    if ([self screenPosition:touchPosition intersectedWithSprite: aSprite]){
        NSInteger tagForSprite = aSprite.tag; // do what you want with this value
    }
}

touchPositionIntersectedWithSprite是一个检查实际碰撞并返回BOOL的方法......

答案 1 :(得分:0)

  1. 注册触摸。使用功能:

    -(id) init{
    if( (self=[super init])){
        self.isTouchEnabled = YES;
        /* to do */
    }}
    
    - (void) registerWithTouchDispatcher{
    /* to do */}
    
    - (BOOL) containsTouchLocation:(UITouch *)touch
    {
        return YES;
    }
    
  2. 在功能

    中捕获和分析精灵上的触摸
    - (BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
    {
    
    //e.g. mArrSprites - your NSMutableArray with 20 sprites
    
        for(CCSprite * sprite in mArrSprites){
            if (CGRectContainsPoint(sprite.boundingBox, location)){ //check contains sprite rect your touch
                int tag = sprite.tag;     //GET tag of sprite
            }
        }
    }