web-dev-qa-db-ja.com

Cocos2dで線を引く方法-iPhone

私は簡単なことを成し遂げようとすることで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

「void値は無視されるべきではない」というエラーが発生します。だから明らかに私はそれを間違っているのですが、うまくいけばあなたは私の推論を見ることができます。

私もこれを試しました

-(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;
}

これは私にエラーを与えませんが、それも機能しません。私は基本的なことを理解していないことに気づきましたが、誰かが私を正しい方向に導くことができますか?

19
gargantuan

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) );

  // ...
}
22
Travis

わかりました、私は興味のある人のためにそれを理解しました。これは、何をすべきかを説明するコメント付きのコードです。

@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メソッドはすべてのフレームで呼び出されると思います。

14
gargantuan

CCRibbonクラスを使用して、テクスチャに線を引くこともできます。次に例を示します。

まず、幅、画像、長さ、色、フェードのパラメータを使用して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

8
huyleit