iphone - 在 Cocos2d 中是否可以为单个对象使用多个标签?

标签 iphone objective-c ios cocos2d-iphone

我希望能够为 CCSpriteBatchNode 识别一组对象,而且还能识别该组的子组。做类似的事情

CCArray *listOfGameObjects = [sceneSpriteBatchNode children]; 

for (GameObject *tempObject in listOfGameObjects) { 

    if ([tempObject tag] == kBottleTagValue) {

          //make bottle yellow

          if ([tempObject tag] == kBrokenBottleTagValue) {
               //also make bottle smaller
          }
     }
}

在这个例子中,所有的瓶子都会变成黄色,如果瓶子也被标记为坏了,它就会变小​​。所以破瓶子需要用 kBottleTagValue 和 kBrokenBottleTagValue 来标记。有没有办法做到这一点?因为当我尝试只添加两个标签时它失败了。

最佳答案

是的,您可以使用位掩码来做到这一点。 例如定义你的标签:

enum
{
   kBottleTagValue = 1 << 0;
   kBrokenBottleTagValue = 1 << 1;
};

然后标记你的 Sprite :

[yoursprite setTag:kBottleTagValue|kBrokenBottleTagValue];

最后你可以通过做类似的事情来检查你的 Sprite 是否是一个破瓶子:

CCArray *listOfGameObjects = [sceneSpriteBatchNode children]; 
for (GameObject *tempObject in listOfGameObjects)
{ 
    if ([tempObject tag] & kBottleTagValue)
    {
          //make bottle yellow
          if ([tempObject tag] & kBrokenBottleTagValue)
          {
               //also make bottle smaller
          }
     }
}

希望对你有帮助。

关于iphone - 在 Cocos2d 中是否可以为单个对象使用多个标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7433869/

相关文章:

iphone - 我如何使用performSelectorOnMainThread发送多个对象

iphone - 如何通过选择颜色选项为 UIBezierPath 设置不同的颜色

objective-c - iOS App 在终止前崩溃?

ios - Kxmovie 播放 .rm 格式文件时,音频无法正常工作

javascript - iOS:给定距离和距起点方位的目的地点

ios - iOS 中的水平日历

iphone - iPhone 5 上的 UIStoryBoard 如何变化

objective-c - 如何翻转单个 UIView(不翻转父 View )

objective-c - 指向 objective-c 中的指针?

ios - iPad应用程序: Customize the default navigation controller