cocos2d-x用颜色填充圆圈,无法使用50%不透明度(透明效果)

时间:2013-03-20 09:44:39

标签: cocos2d-x

您好我试图用颜色填充原始圆,然后将颜色不透明度设置为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;
}  

2 个答案:

答案 0 :(得分:4)

之前:

这 - >的addChild(云);

只需添加以下行:

<强>云&GT; setOpacity(128);

不透明度值为0到255

干杯, 阿德

答案 1 :(得分:0)

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

DrawNode

在生产中使用之前,最好先检查一下此目标平台的性能,因为它的“无需授权”解决方案。

啊,是的,对于绘制圆圈,有方法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; } drawSolidCircle