Cocos2d-x填充圆圈的颜色和不能50%的不透明度(透明效果)



你好,我试图用颜色填充原始圆形,然后将颜色不透明度设置为50%透明。我在网上搜索了一下,没有找到任何解决方案,只有cocos2d-iphone的东西。我从雪碧继承来的它确实给我画了一个圆圈。

void CircleSprite::draw(void)
{
 glLineWidth(2);
 cocos2d::ccDrawColor4B(0, 255, 255, 255);
 cocos2d::ccDrawCircle( ccp(100/2, 100/2), 50, CC_DEGREES_TO_RADIANS(90), 50, false);
}
#ifndef __CIRCLESPRITE_H__
#define __CIRCLESPRITE_H__
#include "cocos2d.h" 
class CircleSprite : public cocos2d::CCSprite
{
    public :
        virtual void draw(void);
    private:
};
#endif
in the main loop :
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
        CCSprite* cloud = drowCloud();
        cloud->setPosition(ccp(cloud->getContentSize().width/2,winSize.height/2));
        this->addChild(cloud);
CCSprite* HelloWorld::drowCloud()
{
    CCSprite * pCloud = new CircleSprite();
    return pCloud;
}  

before:

——> addChild(云);

只需添加一行:

云-> setOpacity (128),

不透明度值从0到255

欢呼,阿德里亚诺

对于各种自定义绘图最好使用DrawNode,但不幸的是,基本的DrawNode不能自己处理不透明度(此功能在cocos2d-4.*的计划中)。因此,如果类AlphaNode继承自DrawNode,我们可以这样定义setOpacity(在cocos2dx-3-13测试):

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;
}

在生产环境中使用之前,最好先检查一下目标平台上的性能,因为它是"未经授权的"解决方案。

啊,啊,画圆有drawSolidCircledrawCircle方法

最新更新