zoukankan      html  css  js  c++  java
  • cocos DrawNode 相关

    环境: cocos2d lua 3.10  Visual studio 2013

    cocos 绘图的方式有两种:

    1. DrawPrimitives

    2. DrawNode,比第一种绘制要快,继承于Node

    关于DrawNode的使用方法:

    -- 创建drawNode,并添加到指定的层中
    local drawNode = cc.DrawNode:create()
    self:addChild(drawNode, 10)
    
    -- 绘制点
    local pointpos = cc.p(460,460)          -- 点位置
    local pointSize = 100                   -- 点大小
    local color = cc.c4f(0.8, 1, 0.8, 1)    -- 颜色,取值范围0~1之间
    drawNode:drawPoint(pointpos, pointSize, color)
    
    -- 绘制一组点
    local pointGroup = {                    -- 点位置组
        cc.p(160,160), cc.p(170,170), cc.p(160,170), 
        cc.p(170,160), cc.p(170,180)
    }
    local pointNum = #pointGroup            -- 点数目
    pointSize = 1                           -- 点大小
    color = cc.c4f(0.8, 1, 0.8, 1)          -- 颜色,取值范围0~1之间
    drawNode:drawPoints(pointGroup, pointNum, pointSize, color)
    
    -- 绘制线段
    local origin = cc.p(0,0)                              -- 起始点
    local destination = cc.p(size.width, size.height)     -- 结束点
    local color = cc.c4f(0,1,0,1)                         -- 线段颜色,取值范围0~1之间
    drawNode:drawLine(origin, destination, color)
    
    -- 绘制有粗度的线条
    local from = cc.p(size.width*3/4,100)         -- 起始点 
    local to = cc.p(size.width*3/4,size.height/2) -- 结束点
    local radius = 100                            -- 半径
    local color = cc.c4f(0, 1, 1, 1)              -- 线条颜色
    drawNode:drawSegment(from, to, radius, color)
    
    -- 绘制空心矩形
    local anglepos1 = cc.p(123,123)         -- 对角线原点
    local anglepos2 = cc.p(700,400)         -- 对角线终点
    local color = cc.c4f(1,1,0,1)           -- 颜色
    drawNode:drawRect(anglepos1, anglepos2, color)
    
    -- 绘制实心矩形
    local anglepos1 = cc.p(200,200)         -- 对角线原点
    local anglepos2 = cc.p(600,300)         -- 对角线终点
    local color = cc.c4f(1,1,1,1)           -- 颜色
    drawNode:drawSolidRect(anglepos1, anglepos2, color)
    
    -- 绘制空心多边形
    local poliGroup = {cc.p(30,130), cc.p(30,230),  -- 点位置组
        cc.p(50,200),cc.p(60,270),cc.p(80,20)
    }
    local poliNum = #poliGroup -- 点数目 local isClose = true -- 是否封闭多边形,true为是 local color = cc.c4f(math.random(0,1), math.random(0,1), math.random(0,1), 1) drawNode:drawPoly(poliGroup, poliNum, isClose, color) -- 绘制实心多边形 local poliGroup = {cc.p(130,130), cc.p(130,230), -- 点位置组 cc.p(150,200),cc.p(160,270),cc.p(180,20)} local poliNum = #poliGroup -- 点数目 local color = cc.c4f(math.random(0,1), math.random(0,1), math.random(0,1), 1) drawNode:drawSolidPoly(poliGroup, poliNum, color) -- 绘制空心椭圆 local center = cc.p(680 ,360) -- 圆心 local radius = 50 -- 半径 local angle = math.pi/2 -- 角度 local segments = 100 -- 段数(数值越大,越精细) local drawLineToCenter = true -- 是否绘制原点到圆心的直线 local scaleX, scaleY = 2.0, 1.0 -- 中心缩放值(两值相等就是圆) local color = cc.c4f(1,1,0,1) -- 颜色 drawNode:drawCircle(center,radius,angle,segments,drawLineToCenter,scaleX,scaleY,color) -- 绘制实心椭圆 local center = cc.p(480 ,360) -- 圆心 local radius = 100 -- 半径 local angle = math.pi/2 -- 角度 local segments = 100 -- 段数(数值越大,越精细) local scaleX, scaleY = 2.0, 1.0 -- 中心缩放值(两值相等就是圆) local color = cc.c4f(1,0,0,1) -- 颜色 drawNode:drawSolidCircle(center, radius, angle, segments, scaleX, scaleY, color) -- 绘制贝塞尔曲线 local origin = cc.p(size.width - 150, size.height - 150) -- 原点 local control = cc.p(size.width - 70, size.height - 10) -- 控制点 local destination = cc.p(size.width - 10, size.height - 10) -- 终点 local color = cc.c4f(1,0,0,1) -- 颜色 drawNode:drawQuadBezier(origin, control, destination, 10, color) -- 绘制三次贝塞尔曲线 local origin = cc.p(480,360) -- 原点 local control = cc.p(10,410) -- 控制点1 local control2 = cc.p(40,310) -- 控制点2 local destination = cc.p(0,640) -- 终点 local segments = 100 -- 段数(数值越大,越精细) local color = cc.c4f(1,1,1,1) -- 颜色 drawNode:drawCubicBezier(origin, control, control2, control2, segments, color) --绘制画基数样条 local pointArray = { -- 数组点 cc.p(200, 80), cc.p(size.width - 130, 80), cc.p(size.width - 130, size.height - 180), cc.p(0, size.height - 180), cc.p(200, 80) } local tension = 0.1 -- 张力(数值越大,越平整) local segments = 50 -- 段数(数值越大,越精细) local color = cc.c4f(0.8, 0.7, 1, 1)-- 样条颜色 drawNode:drawCardinalSpline(pointArray,tension,segments,color) -- local pointArray = { -- 指向控制点的点数组 cc.p(size.width/2, 30), cc.p(size.width - 80, 30), cc.p(size.width - 80, size.height - 80), cc.p(size.width/2, size.height - 80), cc.p(size.width/2, 30) } local segments = 50 -- 段数(数值越大,越精细) local color = cc.c4f(1, 0, 1, 1) -- 颜色 drawNode:drawCatmullRom(pointArray, segments, color) -- 绘制圆 for i=1, 10 do local pos = cc.p(size.width/4, size.height*3/4) -- 原点 local radius = 10*(10-i) -- 半径 local color = cc.c4f(math.random(0,1),math.random(0,1),math.random(0,1),1) drawNode:drawDot(pos, radius, color) end -- 绘制一个带有填充色和线条色的多边形 local o, w, h = 80, 20, 50 local verts = { -- 点坐标组 cc.p(o, o), cc.p(o + w, o - h), cc.p(o + w*2, o), -- lower spike cc.p(o + w*2 + h, o + w ), cc.p(o + w*2, o + w*2), -- right spike cc.p(o + w, o + w*2 + h), cc.p(o, o + w*2), -- top spike cc.p(o - h, o + w), -- left spike } local count = #verts -- 点数目 local fillColor = cc.c4f(1,0,0,0.5) -- 填充颜色 local borderWidth = 1 -- 线条宽度 local borderColor = cc.c4f(0,0,1,1) -- 线条颜色 drawNode:drawPolygon(verts, count, fillColor, borderWidth, borderColor)

    其效果图:

  • 相关阅读:
    api示例
    Windows+Ubuntu文件互传
    UI
    事件
    插件开发入门
    文摘
    刘海屏适配
    APT
    热修复
    进程保活
  • 原文地址:https://www.cnblogs.com/SkyflyBird/p/10133960.html
Copyright © 2011-2022 走看看