19

我试图通过完成简单的事情来掌握 Cocos2d。此时,我有一个场景,该场景有一个背景精灵和一个图层。我正在尝试使用 drawLine 绘制到图层上。这是我目前的尝试。

@implementation MyLayer
-(id)init{
    self = [super init];
    if(self != nil){
        glColor4f(0.8, 1.0, 0.76, 1.0);  
        glLineWidth(2.0f);
        CocosNode *line = drawLine(10.0f, 100.0f,400.0f,27.0f);
        [self addChild:line z:1];
    }
    return self;
}
@end

这会产生错误“不应忽略的无效值”。所以很明显我做错了,但希望你能看到我的推理。

我也试过这个

-(id)init{
    self = [super init];
    if(self != nil){
        glColor4f(0.8, 1.0, 0.76, 1.0);  
        glLineWidth(2.0f);
        drawLine(10.0f, 100.0f,400.0f,27.0f);
    }
    return self;
}

这不会给我一个错误,但它也不起作用。我意识到我不了解一些基本的东西,但是谁能引导我朝着正确的方向前进?

4

3 回答 3

22

来自 cocos2d drawPrimitivesTest.m

- (void)draw {
  // ...

  // draw a simple line
  // The default state is:
  // Line Width: 1
  // color: 255,255,255,255 (white, non-transparent)
  // Anti-Aliased
  glEnable(GL_LINE_SMOOTH);
  ccDrawLine( ccp(0, 0), ccp(s.width, s.height) );

  // ...
}
于 2010-07-20T08:21:46.450 回答
14

好的,我想出来给任何有兴趣的人。这是带有注释的代码,解释了要做什么。

@implementation GameLayer
-(id)init{
    self = [super init];
    if(self != nil){
        // init stuff here      
    }
    return self;
}

// You have to over-ride this method
-(void)draw{
    glColor4f(0.8, 1.0, 0.76, 1.0);  
    glLineWidth(2.0f);
    drawLine(10,100,50,79);
}    
@end

所以我假设,draw方法在每一帧都被调用。

于 2009-03-27T22:34:29.027 回答
8

您还可以使用 CCRibbon 类来绘制纹理与线条。这是一个例子:

首先,您使用 width 、 image 、 length 、 color 和 fade 参数创建 CCribbon

ccColor4B myColor = ccc4(255, 255, 255, 150);

CCRibbon *ribbon = [CCRibbon ribbonWithWidth:10 image:@"green.png" length:10.0 color:myColor fade:0.7f];

然后我们将其添加为子项:

[self addChild:ribbon z:8];

如果您现在运行应用程序,您将看不到任何内容,因为您还没有向 CCRibbon 添加任何点,所以让我们添加 2 个点

[ribbon addPointAt:ccp(10,10) width:10];

[ribbon addPointAt:ccp(15,15) width:10];

您不能删除单个点,但可以从其父级中删除 CCRibbon

[self removeChild:ribbon cleanup:YES];

源代码来自: http ://www.ccsprite.com/cocos2d/using-ccribbon-example.html

于 2011-11-18T06:43:50.290 回答