2011-07-25 92 views
2

我对iphone编程相对比较陌生,而且我一直在用cocos2d开始。我想知道是否有办法一次为多个精灵设置不透明度?我注意到CCLayer没有实现opacity,而且opacity似乎没有传播给CCSprite类的子类。在Cocos2d中更改多个精灵的不透明度

有没有更好的方法来做到这一点,而不是重写自定义ccnode上的setOpacity并逐个遍历并设置不透明度?或者也许重写绘图并手动设置混合模式?

谢谢!

回答

3

可以遍历场景中的所有的精灵,检查它们是否你想要的精灵,然后设置不透明度像这样(假设你的标签,当你创建精灵设为OPACITY_SPRITE_TAG)

for(CCSprite* sprite in [self children]) 
{ 
    if([sprite tag] == OPACITY_SPRITE_TAG) 
    { 
     [sprite setOpacity:NEW_OPACITY]; 
    } 
} 
+0

不...这是一个不好的解决方案。它分别改变多个精灵的不透明度。因此,如果他们相交,他们将通过彼此展示。这不是OP真正想要的。 – Coyote

0

难道你不能只通过你想改变的精灵数组来增加。喜欢的东西:

for(int i = 0; i < [myArray count]; i++){ 
CCSprite *mySprite = [myArray objectAtIndex:i]; 
[mySprite setOpacity:100]; 
} 
+0

是啊,这就是我会做一个解决办法,但因为我将要在一吨精灵经常改变不透明,我不知道是否会更有效采取场景图的优点结构Cocos2d用来做不透明 – Xzhsh