您的位置:首页 > 移动开发 > Cocos引擎

cocos2dx实现游戏属性雷达图

2015-09-09 16:44 746 查看
游戏中常见的属性雷达图



那么在cocos2dx中如何实现?并且可以根据属性的变化来变化圆中的五边形偏向。

首先想到的是DrawNode类来实现基本绘图,先在屏幕上画一个圆,再画等分该圆的五条线,最后根据线上五点的坐标来确定五边形。

//创建一个父节点node,使得该雷达图位于屏幕的中心
auto node = Node::create();
node->setPosition(visibleSize.width/2,visibleSize.height/2);
this->addChild(node);

//创建DrawNode的对象draw,用该对象来实现基本绘图
auto draw = DrawNode::create();
node->addChild(draw);

//属性的值的数组,以后只要在该数组上修改属性值即可实现五边形的偏向随属性的变化而变化
float l[]={30,40,60,90,30};
//点数组
Vec2 vecs[5];
//利用数学函数确定五边形的点的坐标
vecs[0] = Vec2(-l[0]*cos(M_PI/180*18),l[0]*sin(M_PI/180*18));//Point(-100,0);
vecs[1] = Vec2(l[1]*cos(M_PI/180*90),l[1]*sin(M_PI/180*90));//Point(0,100);
vecs[2] = Vec2(l[2]*cos(M_PI/180*18),l[2]*sin(M_PI/180*18));//Point(100,0);
vecs[3] = Vec2(l[3]*cos(M_PI/180*54),-l[3]*sin(M_PI/180*54));//Point(50,-100);
vecs[4] = Vec2(-l[4]*cos(M_PI/180*54),-l[4]*sin(M_PI/180*54));//Point(-50,-100);

//画圆(点)
draw->drawDot(Point(0,0), 100, Color4F(0.85,0.65,0.47, 1));
//画多边形(五边形)
draw->drawPolygon(vecs, 5, Color4F(0.94,0.92,0.68,1), 0, Color4F(0,0,0,1) );

//画等分该圆的五条线
for(int i=0;i<5;i++)
l[i]=100;
vecs[0] = Vec2(-l[0]*cos(M_PI/180*18),l[0]*sin(M_PI/180*18));
vecs[1] = Vec2(l[1]*cos(M_PI/180*90),l[1]*sin(M_PI/180*90));
vecs[2] = Vec2(l[2]*cos(M_PI/180*18),l[2]*sin(M_PI/180*18));
vecs[3] = Vec2(l[3]*cos(M_PI/180*54),-l[3]*sin(M_PI/180*54));
vecs[4] = Vec2(-l[4]*cos(M_PI/180*54),-l[4]*sin(M_PI/180*54));

draw->drawSegment(vecs[0], Vec2(0, 0), 0.5, Color4F(0.55, 0.41, 0.25, 1));
draw->drawSegment(vecs[1], Vec2(0, 0), 0.5, Color4F(0.55, 0.41, 0.25, 1));
draw->drawSegment(vecs[2], Vec2(0, 0), 0.5, Color4F(0.55, 0.41, 0.25, 1));
draw->drawSegment(vecs[3], Vec2(0, 0), 0.5, Color4F(0.55, 0.41, 0.25, 1));
draw->drawSegment(vecs[4], Vec2(0, 0), 0.5, Color4F(0.55, 0.41, 0.25, 1));


运行效果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cocos2d-x