首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cocos2d图层上绘制直线或矩形

在cocos2d图层上绘制直线或矩形
EN

Stack Overflow用户
提问于 2011-03-17 07:17:18
回答 2查看 8.9K关注 0票数 3

你能让我知道使用Cocos2d ios4 iphone在场景层上绘制直线或矩形的最好方法是什么吗?

到目前为止,我已经尝试过Texture2d,但它更像是一个画笔,效果不是很好。尝试使用draw方法绘制直线,但前一条直线在绘制另一条直线时消失。

基本上想画多个水平的,垂直的,倾斜的梁。请提个建议。任何代码都会有很大帮助。

使用纹理绘制的代码如下:

代码语言:javascript
复制
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];

渲染效果不好,尤其是。使用斜线作为缩放会影响质量。

干杯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-29 05:06:00

您可以创建一个单独的层并调用draw方法,如下所示:

代码语言:javascript
复制
-(void) draw
{
    CGSize s = [[Director sharedDirector] winSize];

    drawCircle( ccp(s.width/2,  s.height/2), circleSize, 0, 50, NO);

这是一个圆圈,但原理是一样的。这是我前段时间做的一个项目,它当时起作用了。不知道从那以后有没有什么变化。

票数 2
EN

Stack Overflow用户

发布于 2012-06-28 03:24:23

您需要将draw方法添加到您的层:

代码语言:javascript
复制
-(void) draw {
    // ...
}

在它内部,您可以使用一些类似openGL的函数和openGL的cocos2d包装器方法。

提示:可以在draw方法中调用其他方法。但请记住,对于包含openGL指令的方法使用其他名称,上面提到的在draw中没有调用的名称根本不起作用。即使从update方法或scheduleUpdate选择器使用的其他方法调用。

所以你最终会得到这样的结果:

代码语言:javascript
复制
-(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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5332966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档