【cocos2d-x】setOpacity vs setVisible

c++

ちょっと間が空き過ぎそうなので軽いネタで投稿したいと思います。

ビューの表示/非表示を条件によって切り替える事は多々あると思うんですが、これを実現するための方法は二つあります。

setOpacity

setOpacityはご存知、透明度をいじる方法です。
これを0にすれば透明、つまり見えない状態になります。

Node* node = Node::create();
node->setOpacity(0);

setVisible

setVisibleはその名の通り、見えるか見えないかをtrue/falseで設定するメソッドです。

Node* node = Node::create();
node->setVisible(false);

どっちを使うのが良いのでしょうか?

結論は、setVisibleだと僕は思っています。
(反論あればコメントや@daiki1003宛にお願いします。)

理由は、cocos2dのプロジェクトを見ると
isVisible()によって処理を切り替えている所が多くあるからです。

さらに、CCNode.cppのNode::setVisibleメソッドはこのような処理になっています。

/// isVisible setter
void Node::setVisible(bool visible)
{
    if(visible != _visible)
    {
        _visible = visible;
        if(_visible) _transformUpdated = _transformDirty = _inverseDirty = true;
    }
}

内部でも様々なプロパティを変更しています。
visibleを変更しておけば、不必要な処理がされる事がないと言うわけですね。

誰かのお役に立てば。

このブログのcocos記事一覧

コメント

タイトルとURLをコピーしました