2012-01-05 158 views
0

我已經搜索和搜索,沒有找到任何適用於我的東西。如何在cocos2d-iphone中繪製一個漸變線?我嘗試過CCRibbon,但後來我得到了空白,我試圖在繪製方法中繪製多個對齊的線條,但使用不同的alpha值,但是我的繪製方法不會對設置alpha做出反應(它總是100%alpha,請參閱我的繪製方法在這裏)。我該怎麼做?在cocos2d中連續繪製漸變線

- (void)draw { 
    glEnable(GL_LINE_SMOOTH); 
    glColor4ub(0,255,255,50); 
    ccDrawLine(ccp(0 - 5, 0 - 5), ccp(200 - 5, 300 - 5)); 
}

謝謝
瑟倫

回答

1

我不知道這是否是你所需要的:

- (void)draw { 
    static GLubyte alpha = 0; 
    static int step = 1; 

    alpha += step; 
    if (alpha == 255 || alpha == 0) { 
     step = -step; 
    } 

    // You gonna need these two lines to use Alpha channel 
    glEnable(GL_BLEND); // disabled by default 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

    glEnable(GL_LINE_SMOOTH); 
    glColor4ub(0, 255, 255, alpha); 
    ccDrawLine(ccp(0, 0), ccp(200, 300)); 
} 

更多有關GL_BLENDglBlendFunc你可以參考OpenGL ES 1.1 Reference

0

從我想你想要的問題,例如,從左到右運行的粗線和從該線的頂部到底部的漸變。如果是這樣,那麼我就是這麼做的。我創建了一個1 x 6 png圖像,該圖像具有垂直漸變,並且內置了一個alpha。然後,當我想創建一條線時,我會在我的圖層中調用我的drawLine方法。

- (void) drawLine: (CGPoint)origin withEnd:(CGPoint)end 
{ 
    CCSprite *wall = [CCSprite spriteWithFile:@"WallGradient.png"]; 

    float distance = sqrt(powf(origin.x - end.x, 2) + powf(origin.y - end.y, 2)); 
    float rotation = (180/M_PI) * acosf((origin.x - end.x)/distance)); 

    [wall setScaleX:distance]; 
    [wall setRotation: rotation]; 
    [wall setPosition: origin]; 

    [self addChild:wall]; 
}