您能否告诉我使用Cocos2d ios4 iphone在场景图层上绘制直线或矩形的最佳方法是什么?
到目前为止,我已经尝试过Texture2d,但它更像是画笔,并不是那么好。尝试使用绘制方法绘制一条线,但前一条线在绘制另一条线时消失。
基本上想要绘制多个水平,垂直,倾斜的光束。请建议。任何代码都会有很大的帮助。
使用纹理绘制的代码如下:
CGPoint start = edge.start;
CGPoint end = edge.end;
// begin drawing to the render texture
[target begin];
// for extra points, we'll draw this smoothly from the last position and vary the sprite's
// scale/rotation/offset
float distance = ccpDistance(start, end);
if (distance > 1)
{
int d = (int)distance;
for (int i = 0; i < d; i++)
{
float difx = end.x - start.x;
float dify = end.y - start.y;
float delta = (float)i / distance;
[brush setPosition:ccp(start.x + (difx * delta), start.y + (dify * delta))];
[brush setScale:0.3];
// Call visit to draw the brush, don't call draw..
[brush visit];
}
}
// finish drawing and return context back to the screen
[target end];
渲染效果不佳。由于缩放会影响质量,因此使用斜线。
干杯
答案 0 :(得分:2)
你可以创建一个单独的图层并像这样调用draw方法:
-(void) draw
{
CGSize s = [[Director sharedDirector] winSize];
drawCircle( ccp(s.width/2, s.height/2), circleSize, 0, 50, NO);
这是一个圆圈但原则是一样的。这是我在一段时间后做的一个项目,然后就可以了。不知道从那以后发生了什么变化。
答案 1 :(得分:2)
您需要向图层添加绘图方法:
-(void) draw {
// ...
}
在其中你可以使用一些类似openGL的函数和cocos2d包装方法来实现openGL。
提示:可以在 draw 方法中调用其他方法。 但请记住,使用其他名称作为方法 包含openGL指令,不是上面提到的内部绘制,根本不起作用。 即使从scheduleUpdate选择器使用的update方法或其他方法调用。
所以你最终会得到这样的东西:
-(void) draw {
glEnable(GL_LINE_SMOOTH);
glColor4ub(255, 0, 100, 255);
glLineWidth(4);
CGPoint verts[] = { ccp(0,200), ccp(300,200) };
ccDrawLine(verts[0], verts[1]);
[self drawSomething];
[self drawSomeOtherStuffFrom:ccp(a,b) to:ccp(c,d)];
[someObject doSomeDrawingAsWell];
}
有关更多信息,请查看cocos2d-iphone编程指南:
http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:draw_update?s[]=schedule#draw