Cocos2d-x学习笔记(七)实例——绘制图形

来源:互联网 发布:做优化发展环境维护人 编辑:程序博客网 时间:2024/04/28 09:53

【关于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绘制图形很容易实现,附上运行效果图: