你好,我试图用颜色填充原始圆形,然后将颜色不透明度设置为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;
}
在生产环境中使用之前,最好先检查一下目标平台上的性能,因为它是"未经授权的"解决方案。
啊,啊,画圆有drawSolidCircle
和drawCircle
方法