点、 线、 面

      
  1. 函数原型:virtual void addChild(CCNode * child, int zOrder, int tag);

    addChild()有三个参数:

    1、要加入场景的对象的指针,(可以是CCSprite*,CCLayer*,CCNode*等类型)

    2、绘制层的顺序,默认参数值为0,表示最高优先层导入,该值越大表示该层在最后加载(在最高一层),一般背景图层是首先加载,其他元素在加载在背景层上面。因为背景在后面加载的话,会覆盖掉前面加载的元素,看不到想要的图层组合效果。

    3、Tag标记。赋予类的某个方法中定义的局部变量(CCNode*类型对象,CCSprite*对象等)一个标记号tag,如果以后在该类的其他方法中要访问这个变量时可以通过调用函数getChildByTag来取回该对象,从而方便使用这个对象进行想要的操作。这样做的好处是:定义成类的成员变量会一直占用内存资源,而局部变量的生命周期比成员变量短,节省系统资源,而且在外面就可以通过函数getChildByTagtag号来获取这个对象。所以在以后编写Cocos2d代码过程中,尽量使用局部变量。

    例如:CCSprite *sp1 = (CCSprite*)this->getChildByTag(tag),然后可以再下面的代码中对该精灵对象进行访问,添加动作等等。





  1. 把背景Zorder设置成-1,
  2. 下面就可以在draw()中使用下列函数进行绘制了:
  3.       //1.设置绘制颜色  
  4.   
  5. 1.ccDrawColor4B("红","绿","蓝","透明");  
  6.   
  7.        //2.设置绘制线宽  
  8.   
  9. 2.glLineWidth(线条宽度); //在比较小的值(10)范围内才有效 
  10.   
  11.        //3.绘制一条直线  
  12.   
  13. 3.ccDrawLine("起点坐标","终点坐标");  
  14.   
  15.        //4.设置点的大小  
  16.   
  17. 4.ccPointSize("半径");   //
  18. 要使得该函数产生效果,必须先启用VS顶点大小功能 
    1. glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);  
  19.   
  20.  //5.绘制一个点  
  21.   
  22. 5.[1]ccDrawPoint("点的坐标");  
  23.   
  24. 5.[2]ccDrawPoints("点的坐标数组","数量");  
  25.   
  26.        //6.绘制一个圆形  
  27.   
  28. 6.[1]ccDrawCircle("中心点坐标","半径f","角度f","分段数","显示半径","X轴放大倍数f","Y轴放大倍数f");  
  29.   
  30. 6.[2]ccDrawCircle("中心点坐标","半径f","角度f","分段数","显示半径");  
  31.   
  32.        //7.绘制空心多边形  
  33.   
  34. 7.ccDrawPoly("顶点数组","点数量","是否自动封闭");  
  35.   
  36.        //8.绘制实心多边形  
  37.   
  38. 8.ccDrawSolidPoly("顶点数组","点数量","颜色4F");  
  39.   
  40.        //9.绘制填充矩形  
  41.   
  42. 9.ccDrawSolidRect("对角顶点1","对角顶点2","颜色4F");  
  43.   
  44.        //10.绘制空心矩形  
  45.   
  46. 10.ccDrawRect("对角顶点1","对角顶点2");  
  47.   
  48.        //11.绘制平面贝赛尔曲线  
  49.   
  50. 11.ccDrawQuadBezier("起始点","控制点","结束点","分段数");  
  51.   
  52.        //12.绘制立体贝赛尔曲线  
  53.   
  54. 12.ccDrawCubicBezier("起始点","控制点1","控制点2","结束点","分段数");  
  55.   
  56.   
  57. 颜色:  
  58.   
  59. ccDrawColor4B("红f","绿f","蓝f","透明f");//红、绿、蓝、透明、满值均为255  
  60.   
  61. ccDrawColor4F("红f","绿f","蓝f","透明f");//红、绿、蓝、满值均为255,透明满值为1  
  62.   
  63. 【二】:示例  
  64.    
  65. 1.重写draw函数    
  66.   
  67. void Drawdemo::draw(){  
  68.   
  69.    //-new-//  
  70.   
  71.    CCSize mysize=CCDirector::sharedDirector()->getWinSize();  
  72.   
  73.    //画个猥琐的直线  
  74.   
  75.    ccDrawColor4B(255,255,255,130);  
  76.   
  77.    glLineWidth(3);  
  78.   
  79.    ccDrawLine(ccp(100,200),ccp(mysize.width-100,200));  
  80.   
  81.    //再画个可爱的圈圈  
  82.   
  83.    ccDrawColor4B(255,255,100,190);  
  84.   
  85.    glLineWidth(3);  
  86.   
  87.    ccDrawCircle(ccp(mysize.width/2,mysize.height/2),100,0,360,1,2,1);  
  88.   
  89.    //再来画个点  
  90.   
  91.    ccDrawColor4B(255,25,200,250);  
  92.   
  93.    glLineWidth(3);  
  94.   
  95.    ccPointSize(10);  
  96.   
  97.    ccDrawPoint(ccp(mysize.width/2,mysize.height/2));  
  98.   
  99.    //再来画个空心矩形  
  100.   
  101.    ccDrawColor4B(24,25,200,140);  
  102.   
  103.    glLineWidth(3);  
  104.   
  105.    ccDrawRect(ccp(100,100),ccp(300,200));  
  106.   
  107.    //再来个实心的  
  108.   
  109.    ccDrawSolidRect(ccp(110,210),ccp(310,110),ccc4f(255,255,255,0.5f));  
  110.   
  111.    //再来画个空心多边形  
  112.   
  113.    ccDrawColor4B(240,225,100,130);  
  114.   
  115.    glLineWidth(3);  
  116.   
  117.    CCPoint Polyarray[]={ccp(20,100),ccp(50,40),ccp(250,420),ccp(510,450),ccp(210,140)};  
  118.   
  119.    ccDrawPoly(Polyarray,5,1);  
  120.   
  121.    //再来个实心的多边形  
  122.   
  123.    CCPoint Polyarray2[]={ccp(120,150),ccp(150,420),ccp(350,120),ccp(310,250),ccp(320,170)};  
  124.   
  125.    ccDrawSolidPoly(Polyarray2,5,ccc4f(142,245,70,0.3f));  
  126.   
  127.    //绘制平面贝赛尔曲线  
  128.   
  129.    ccDrawColor4B(100,100,100,255);  
  130.   
  131.    ccDrawQuadBezier(ccp(0,320),ccp(160,100),ccp(480,320),100);  
  132.   
  133.    //绘制立体贝赛尔曲线  
  134.   
  135.    ccDrawColor4B(200,200,200,255);  
  136.   
  137.    ccDrawCubicBezier(ccp(0,0),ccp(160,300),ccp(320,20),ccp(480,320),100);  
  138.   
  139.    //-new-//  
  140.   
  141. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值