2011-10-16 4 views
0

내가 CCNodeCCNode - 방문 기능이

원래 이미지가 선명 개요, 특별한 아무것도 좋은의 [방문] 기능에 대한 질문이있어 어두운 가장자리를 가지고, 그것은 5 스프라이트를 잎으로 구성한다 내부.

화면 캡쳐 :

http://farm7.static.flickr.com/6107/6248992365_eab5346264_o.png

그럼 내가 그것을 복사 [CCNode 방문]을 사용하고 싶습니다.

그리고 여기에 내가 주위에 어두운 가장자리를 가지고 무대에 기존 스프라이트하지만 "복사 스프라이트 '의 양을 제한하여 응용 프로그램의 성능을 최적화 할 수있는이 기능으로 코드

-(CCSprite *)flattenSprite:(CCSprite*)sprite textureSize:(float)textureSize { 

    CCRenderTexture *rt = [CCRenderTexture renderTextureWithWidth:textureSize height:textureSize]; 
    [rt begin]; 

    // store the original sprite position 
    CGPoint p=sprite.position; 
    //set original sprite to a target point for open GL to "visit" 
    sprite.position=ccp(textureSize/2,textureSize/2); 
    // open GL visit 
    [sprite visit]; 
    //original sprite return to original point 
    sprite.position=p; 

    [rt end]; 
    return [CCSprite spriteWithTexture:rt.sprite.texture]; 
} 

입니다. 이상하게 보입니다 - 특히 스프라이트가 서로 중첩되어있을 때. 당신이 어떤 단서가있는 경우

을 가르쳐주세요/어디서나

+0

내가 답을 알고하지 않습니다하지만 난 그게 기능을 혼합, 예를 들어, 함께 할 수있는 뭔가 직감이이 어두운 가장자리 문제에 대한 유용한 정보를 가지고 당신은 [sprite setBlendFunc : (ccBlendFunc) {GL_ONE, GL_ONE}];과 같은 것을 가질 필요가 있습니다. 나는 여전히 모든 가능성 (GL_ONE, GL_SRC_ALPHA, ...)이 무엇을 의미하는지 알아 내려고 노력 중이다. 나는 그들을 변화시키는 것이 가장자리에 영향을 미치는 것을 관찰했다. –

+0

안녕하세요 @ DanyalAytekin 맞습니다.이 질문은 다음 링크에서 해결되었습니다. - http://www.cocos2d-iphone.org/forum/topic/21869 - 모든 최고의 키트 –

답변

0
-(CCSprite *)flattenSprite:(CCSprite*)sprite textureSize:(float)textureSize { 

    CCRenderTexture *rt = [CCRenderTexture renderTextureWithWidth:textureSize height:textureSize]; 
    [rt begin]; 

    // store the original sprite position 
    CGPoint p=sprite.position; 
    //set original sprite to a target point for open GL to "visit" 
    sprite.position=ccp(textureSize/2,textureSize/2); 
    // open GL visit 
    [sprite visit]; 
    //original sprite return to original point 
    sprite.position=p; 

    [rt end]; 

    CCSprite *renderSprite = [CCSprite spriteWithTexture:rt.sprite.texture]; 
    //this will solve the dark edge problem 
    [sprite setBlendFunc: (ccBlendFunc) { GL_ONE, GL_ONE_MINUS_SRC_ALPHA }]; 

    return renderSprite; 
}