zoukankan      html  css  js  c++  java
  • Cocos2d-x发展---更改父的颜色、透明度的子节点上

           标题手段:当我们改变父节点或透明时的颜色。默认是不会影响孩子的节点。

    作为交换组看到朋友说可以通过设置相关的参数变化的子节点来实现属性的效果,看了看源代码,记录下来:

           引擎版本号为:2.1.4
           引擎中诸如CCSprite 设置颜色的时候是使用基类:CCNodeRGBA中的setColor 方法的。该方法的代码:
    void CCNodeRGBA::setColor(const ccColor3B& color)
    {
         _displayedColor = _realColor = color;
         if ( _cascadeColorEnabled )
         {
              ccColor3B parentColor = ccWHITE;
              CCRGBAProtocol* parent = dynamic_cast<CCRGBAProtocol*>(m_pParent);
              if( parent && parent->isCascadeColorEnabled() )
              {
                   parentColor = parent->getDisplayedColor();
              }
              updateDisplayedColor(parentColor);
         }
    }
           这里面有一个条件推断:_cascadeColorEnabled 这个就是用来设置父节点的颜色的值影响子节点的颜色的。这种方法中主要是得到父节点的颜色值,然后在updateDisplayedColor方法中通过遍历全部的子节点,调用其改动颜色的方法来达到效果。

           相同的,在设置透明度方法中,也有类似的效果。通过设置_cascadeOpacityEnabled 属性来实现需求。

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    Firefox地址栏样式设定
    定制Eclipse
    超简单的java爬虫
    JavaWeb--中文乱码小结
    编译原理之正则表达式转NFA
    Fedora下Eclipse/MyEclipse崩溃的解决方案
    利用Octopress在github pages上搭建个人博客
    在Eclipse中导入新浪微博SDK
    BlueMix
    云计算的三层简单理解
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4641574.html
Copyright © 2011-2022 走看看