J'utilise Cocos2d pour faire glisser l'image-objet et essayer d'ajouter une bordure si une image-objet est sélectionnée. Je peux afficher mon fond blanc, mais ma frontière s'avère particulièrement difficile. J'ai ce code:Bordure autour de CCLayer
if(self.selectedSprite)
self.selectedSprite = nil;
CCLayerColor *selectedLayer = [[CCLayerColor alloc] init];
// CCSprite *backgroundSprite = [CCSprite spriteWithFile:@"white_1x1.gif" rect:CGRectMake(2,2,self.boundingBox.size.width-4,self.boundingBox.size.height-4)];
CCSprite *backgroundSprite = [CCSprite spriteWithFile:@"white_1x1.gif" rect:CGRectMake(0,0,self.boundingBox.size.width,self.boundingBox.size.height)];
[backgroundSprite setContentSize:CGSizeMake(self.contentSize.width-4, self.contentSize.height-4)];
backgroundSprite.anchorPoint = ccp(0,0);
CCRenderTexture* rt = [CCRenderTexture renderTextureWithWidth:backgroundSprite.texture.contentSize.width + 2 height:backgroundSprite.texture.contentSize.height+2];
[backgroundSprite setFlipY:YES];
[backgroundSprite setColor:ccc3(0,0,0)];
ccBlendFunc originalBlendFunc = [backgroundSprite blendFunc];
[backgroundSprite setBlendFunc:(ccBlendFunc) { GL_SRC_ALPHA, GL_ONE }];
CGPoint bottomLeft = ccp(backgroundSprite.texture.contentSize.width * backgroundSprite.anchorPoint.x + 1, backgroundSprite.texture.contentSize.height * backgroundSprite.anchorPoint.y + 1);
CGPoint position = ccpSub([backgroundSprite position], ccp(-backgroundSprite.contentSize.width/2.0f, -backgroundSprite.contentSize.height/2.0f));
[rt begin];
for (int i=0; i<360; i++) // you should optimize that for your needs
{
[backgroundSprite setPosition:ccp(bottomLeft.x + sin(CC_DEGREES_TO_RADIANS(i))*1, bottomLeft.y + cos(CC_DEGREES_TO_RADIANS(i))*1)];
[backgroundSprite visit];
}
[backgroundSprite setPosition:bottomLeft];
[backgroundSprite setBlendFunc:originalBlendFunc];
[backgroundSprite setColor:ccc3(255,255,255)];
[backgroundSprite visit];
[rt end];
[rt setPosition:position];
[selectedLayer addChild:rt];
[selectedLayer addChild:backgroundSprite];
self.selectedSprite = selectedLayer;
J'ai essayé différentes incantations, mais rien ne semble montrer une bordure. J'ai juste besoin d'une bordure noire rectangulaire qui est remplie de blanc à l'arrière de tout le reste sur ma couche.
Excellent, c'est exactement ce dont j'avais besoin. m_needDrawRect est ce que vous utilisez pour contrôler si le trait est visible ou non. – Echilon
oui, ce code vient d'être copié de ma classe =) – Morion