1

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

2 回答 2

4

前:

this->addChild(云);

只需添加以下行:

云->setOpacity(128);

不透明度值从 0 到 255

干杯,阿德里亚诺

于 2013-07-22T20:58:58.997 回答
0

为了更好地使用各种自定义绘图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

于 2016-09-13T09:34:17.800 回答