1

cocos2d 1.0.1 を使用している cocos2d ゲームの 1 つで、セトパシティ機能が機能しないことがわかりました。どのような値を設定しても、すべての ccnode の不透明度は常に 255 であり、フェードイン/フェードアウト アクションも機能しません。同じバージョンの cocos2d を使用している別のゲームがありますが、そのゲームは完全に動作します。この問題を解決する方法について手がかりを持っている人はいますか?

4

2 に答える 2

2

CCNode には実際にはテクスチャ (画像) がないため、不透明度プロパティはありません。CCNode の不透明度を設定すると、その子に影響が及ぶと思われますが、影響はありません。不透明度は、不透明度を設定しているオブジェクトのテクスチャにのみ影響します。CCSprite にはテクスチャがあるため、不透明度を設定できますが、そのようにしてもその CCSprite の子には影響しません。複数の CCSprite の不透明度に影響を与えたい場合は、すべての子をループして、それぞれの不透明度を設定する必要があります。

于 2013-02-25T17:44:52.773 に答える
0

基本的な DrawNode は、不透明度を単独で処理することもできません (この機能は cocos2d-4.* で計画中です)。

Nodeまたはからクラスを継承し、次のようDrawNodeに実装できます。setOpacity

void AlphaNode::setOpacity(GLubyte opac) {
mOpacity = opac;
if (_bufferCount) {
    for (int i = 0; i < _bufferCount; i++) {
        _buffer[i].colors.a = mOpacity;
    }
}

if (_bufferCountGLPoint) {
    for (int i = 0; i < _bufferCountGLPoint; i++) {
        _bufferGLPoint[i].colors.a = mOpacity;
    }
}

if (_bufferCountGLLine) {
    for (int i = 0; i < _bufferCountGLLine; i++) {
        _bufferGLLine[i].colors.a = mOpacity;
    }
    _dirtyGLLine = true;
}
_dirty = true;
}

に対して、このようなことができると思いますNode

于 2016-09-13T09:39:48.897 に答える