【关于draw函数】
在节点类CCNode中,可以重写draw函数并在其中绘制图形。Draw是一个虚函数,只要继承CCNode的子类都可使用,只要在其函数内部添加绘图操作即可在场景中显示绘制的图形。
【1】为了使绘制的图形更清晰,将init()里所有关于布景的资源(精灵图片、菜单项、标签等等)去掉
bool HelloWorld::init()
{
bool bRet = false;
do
{
//////////////////////////////////////////////////////////////////////////
// super init first
//////////////////////////////////////////////////////////////////////////
CC_BREAK_IF(! CCLayer::init());
bRet = true;
} while (0);
return bRet;
}
【2】init()里面什么都没有,这样背景会变成黑色,怎样改变窗口背景呢?
bool AppDelegate::applicationDidFinishLaunching()
{
// initialize director
CCDirector *pDirector = CCDirector::sharedDirector();
pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());
glClearColor(0,1,0,1);//设置窗口背景色
// create a scene. it's an autorelease object
CCScene *pScene = HelloWorld::scene();
// run
pDirector->runWithScene(pScene);
return true;
}
这里要说一下关于glClearColor函数,这其实是一个OpenGL原始函数,系统默认值为glClearColor(0,0,0,0),函数原型为void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ),参数为RGB值以及透明度。(一般在场景创建之前设置)
【3】绘制出窗口的对角线,并在屏幕中心绘制一个圆
void HelloWorld::draw()
{
CCSize size = CCDirector::sharedDirector()->getWinSize();
glLineWidth(2.0f); //设置线宽
ccDrawColor4B(255,0,0,255); //设置画笔括颜色
ccDrawLine(ccp(0,0),ccp(size.width,size.height));
ccDrawLine(ccp(size.width,0),ccp(0,size.height));
ccDrawColor4B(255,255,0,255);
ccDrawCircle(ccp(size.width/2,size.height/2),50,CC_DEGREES_TO_RADIANS(90),50,false);
}
【总结】使用Cocos2d-x绘制图形很容易实现,附上运行效果图: