【问题标题】:Changing opacity for multiple sprites in Cocos2d在 Cocos2d 中更改多个精灵的不透明度
【发布时间】:2011-07-25 00:18:51
【问题描述】:

我对 iphone 编程比较陌生,而且我从 cocos2d 开始。我想知道是否有办法同时为多个精灵设置不透明度?我注意到 CCLayer 没有实现不透明度,并且不透明度似乎没有向下传播到 CCSprite 类的孩子。

有没有比在自定义 ccnode 上覆盖 setOpacity 并单独迭代和设置不透明度更好的方法?或者可能覆盖绘制并手动设置混合模式?

谢谢!

【问题讨论】:

    标签: iphone objective-c cocos2d-iphone


    【解决方案1】:

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

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

    【讨论】:

    • 不...这是一个糟糕的解决方案。它分别改变多个精灵的不透明度。因此,如果它们相交,它们将相互显示。这不是 OP 真正想要的。
    【解决方案2】:

    你不能只增加一个你想要改变的精灵数组。比如:

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

    【讨论】:

    • 是的,这就是我作为解决方法要做的事情,但是由于我要经常在大量精灵上更改不透明度,我想知道利用Cocos2d用来做不透明度的场景图结构
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多