2012-06-18 3 views

답변

1

저는 ccDrawLine을 사용하지 않았지만 Sprite로 라인을 생성하고 애니메이션을했습니다 (아래 코드 참조). 이 방법으로 나는 만들어진 커스텀 라인 이미지를 사용할 수 있었다. (하지만 나는 그렇게했다.) 당신이 기본 요소에 충실하려면

나는 예를 들어 시작 (당신이 원시 (방법을 설명 this 게시물을 참조) 라인의 불투명도를 설정해야하고 불투명도 레벨을 설정 행동의 순서를 만들 수있을 것 같아요 다시 내 이미지 만 흐리게 효과를 얻기 위해) 위의 링크의 방법을 사용했던 것처럼 100 % 100 %, 다음 75 %, 불투명도 ..

코드 사용하여 이미지 :

CCSprite * string = [self getChildByTag:tag]; 
[string setOpacity:100]; 
NSMutableArray* frames = [[NSMutableArray alloc]initWithCapacity:3]; 
NSString*lineFrame = [NSString stringWithString:@"line0.png"];    

CCSpriteFrame* frame = [[CCSpriteFrameCache sharedSpriteFrameCache]spriteFrameByName:lineFrame]; 
[frames addObject:frame]; 

lineFrame = [NSString stringWithString:@"line1.png"]; 
frame = [[CCSpriteFrameCache sharedSpriteFrameCache]spriteFrameByName:lineFrame]; 
[frames addObject:frame]; 

lineFrame = [NSString stringWithString:@"line0.png"]; 
frame = [[CCSpriteFrameCache sharedSpriteFrameCache]spriteFrameByName:lineFrame]; 
[frames addObject:frame]; 


CCAnimation* anim = [CCAnimation animationWithFrames:frames delay:0.1f]; 
CCAnimate* animate = [CCAnimate actionWithAnimation:anim]; 
//CCRepeatForever* repeat = [CCRepeatForever actionWithAction:animate]; 
[string runAction:animate]; 

[string setOpacity:75]; 

희망이 도움이 ..

+0

가 대단히 감사합니다 사용하기 위해 더 많은 유연성을 제공합니다하려면,이 메서드가 사용됩니다. – user1297301

+0

다행입니다. :) – mm24

0
#import "cocos2d.h" 

@interface CClineSprite : CCLayer 
{ 
    CCRenderTexture * renderTarget; 
    NSMutableArray * pathArray; 
    CCSprite  * pathBrush; 
    CGPoint   prePosition; 
} 

-(void)setLinePosition:(CGPoint)position; 

-(void)setLineOpacity:(GLubyte) anOpacity; 

-(void)setLineScale:(float) scale; 

-(void)setLineColor:(ccColor3B) color; 

@end 








#import "CClineSprite.h" 

@implementation CClineSprite 

- (id) init 
{ 
    self = [super init]; 

    if (self) 
    { 
     CGSize s = [[CCDirector sharedDirector] winSize]; 
     renderTarget = [CCRenderTexture renderTextureWithWidth:s.width height:s.height]; 
     [renderTarget setPosition:ccp(s.width/2, s.height/2)]; 
     [self addChild:renderTarget z:1]; 
     pathBrush = [CCSprite spriteWithFile:@"dots.png"]; 
     pathBrush.color = ccWHITE; 
     [pathBrush setOpacity:100]; 
     [pathBrush setScale:0.5]; 
     pathArray = [[NSMutableArray alloc]init]; 
    } 
    return self; 
} 

-(void)setLineOpacity:(GLubyte) anOpacity 
{ 
    [pathBrush setOpacity:anOpacity]; 
} 

-(void)setLineScale:(float) scale 
{ 
    [pathBrush setScale:scale]; 
} 

-(void)setLineColor:(ccColor3B) color 
{ 
    [pathBrush setColor:color]; 
} 

-(void)setLinePosition:(CGPoint)position 
{ 
    [pathArray addObject:[NSValue valueWithCGPoint:position]]; 
    [self renderPath]; 
} 

- (void) renderPath 
{ 
    [renderTarget clear:0 g:0 b:0 a:0]; 
    [renderTarget begin]; 

    for (int i = 0; i < pathArray.count-1;i++) 
    { 
     CGPoint pt1; 
     CGPoint pt2; 

     [[pathArray objectAtIndex:i] getValue: &pt1]; 
     [[pathArray objectAtIndex:i + 1] getValue: &pt2]; 

     float distance = ccpDistance(pt1, pt2); 

     if (distance > 1) 
     { 
      int d = (int)distance; 
      for (int i = 0; i < d; i += 10) 
      { 
       float difx = pt2.x - pt1.x; 
       float dify = pt2.y - pt1.y; 
       float delta = (float)i/distance; 

       [pathBrush setPosition:ccp(pt1.x + (difx * delta), pt1.y + (dify * delta))]; 
       [pathBrush visit]; 
      } 
     } 
    } 
    [renderTarget end]; 
} 

@end 

사용법 :

CClineSprite* streak = [CClineSprite node]; 
[self addChild:streak z:999]; 
[streak setLinePosition:associatedTurtleObject.position]; 
[streak setLineScale:0.4]; 

동적으로 업데이트하거나 라인을 확장 단지

[streak setLinePosition:ccp(x,y)]; 

희망 사용이

+0

사용법 : CClineSprite * streak = [CClineSprite node]; [self addChild : streak z : 999]; [streak setLinePosition : associatedTurtleObject.position]; [streak setLineScale : 0.4]; 동적으로 업데이트 또는 선을 연장 단지 [킬 setLinePosition : CCP (X, Y)]를 사용하여; 희망이 당신에게 사용하기 위해 더 많은 유연성을 제공합니다 –

관련 문제