zoukankan      html  css  js  c++  java
  • cocos2dx ui显示机制

    实验1

    1,a.addChild(b); a的宽高没变,还是自己的宽高。 层级添加  不会改变原层大小。 

    2.node.addChild(sprite);node的宽和高也没变 感觉2dx的显示不是树形结构。

    然后改变node的透明度也不管用,node不是个显示类,感觉唯一的作用就是操作很多个sprite。一起改变位置

    //sprite包含情况
    void HelloWorld::testSpriteAdd()
    {
        auto sprite1 = Sprite::create("Images/CyanSquare.png");
        sprite1->setPosition(160, 240);
        
        log("sprite1 w,h %f %f",sprite1->getContentSize().width, sprite1->getContentSize().height);
    
        auto node = Node::create();
        node->addChild(sprite1);
      node->setOpacity(255 / 2); addChild(node, 0, 100); log("node w,h %f %f", node->getContentSize().width, node->getContentSize().height);//0,0 }

     实验2

    感觉2dx中没有父改变,所有的子都改变的机制,只是单单改变你调用的那一个对象,下面的代码只有bomb1改变了透明度,他的子spr并没有改变

    auto s = Director::getInstance()->getWinSize();
        Node* node = Node::create();
        Sprite* bomb1 = Sprite::create("bg.png");
        node->addChild(bomb1);
        this->addChild(node);
        node->setOpacity(255 / 2);
    
        node->setPosition(Vec2(s.width/2,s.height/2));
    
        auto spr = Sprite::create("a.png");
        bomb1->addChild(spr);
    
        bomb1->setOpacity(255/3);//

     那要整体改变一个node的透明读,然后他所有的子的透明度都变化应该怎么做呢?

    void HelloWorld::testSetOpacity()
    {
        auto s = Director::getInstance()->getWinSize();
        Node* node = Node::create();
        node->setCascadeOpacityEnabled(true);
        Sprite* bomb1 = Sprite::create("bg.png");
        node->addChild(bomb1);
        
        //auto spr = Sprite::create("a.png");
        //bomb1->addChild(spr);
    
        this->addChild(node);
        node->setPosition(Vec2(s.width / 2, s.height / 2));
        node->setOpacity(255/3);
    }

    setCascadeOpacityEnabled 这个函数里面调用了

    updateDisplayedOpacity 这个方法只是遍历了第一层孩子,没有检测孩子的孩子

    void Node::updateDisplayedOpacity(GLubyte parentOpacity)
    {
    	_displayedOpacity = _realOpacity * parentOpacity/255.0;
        updateColor();
        
        if (_cascadeOpacityEnabled)
        {
            for(auto child : _children){
                child->updateDisplayedOpacity(_displayedOpacity);
            }
        }
    }
     
  • 相关阅读:
    来电科技-自助租借充电宝
    一次使用NodeJS实现网页爬虫记
    八爪鱼采集器
    杭州市职称系统
    zz
    有道智选-网易效果推广
    Ubuntu10.04下载并编译Android4.3源代码
    poj 1654 Area 多边形面积
    Android利用Looper在子线程中改变UI
    Notepad 快捷键 大全
  • 原文地址:https://www.cnblogs.com/as3lib/p/3945643.html
Copyright © 2011-2022 走看看