我使用Steve Oldmeadow的例子成功实现了“Scratch Off”功能。 然后我从渲染纹理创建一个精灵。
我的问题是图像周围有轮廓。认为它与混合/透明度有关,但无法弄清楚如何摆脱轮廓。
感谢您的帮助。
相关守则:
-(id) init
{
burnSprite = [CCSprite spriteWithFile:@"burn100.png"];
[burnSprite setBlendFunc:(ccBlendFunc) { GL_ZERO, GL_ONE_MINUS_SRC_ALPHA }];
scratchOffImage = [[CCSprite spriteWithFile:@"foot.png"] retain];
scratchLayer = [CCRenderTexture renderTextureWithWidth:size.width height:size.height];
scratchLayer.position = ccp(size.width*.5 , size.height*.5);
[[scratchLayer sprite] setBlendFunc: (ccBlendFunc) { GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA }];
[self addChild:scratchLayer z:20];
. . .
- (void) drawTexture {
[scratchLayer begin];
glColorMask(0.0f, 0.0f, 0.0f, 1.0f); // Limit drawing to the alpha channel
[burnSprite visit]; // Draw
glColorMask(1.0f, 1.0f, 1.0f, 1.0f); // Reset color mask
[scratchLayer end];
}
-(void)getImage{
CCSprite *sprite = [CCSprite spriteWithCGImage:[scratchLayer getUIImage].CGImage key:@"myNewImage"];
sprite.position = foot.position;
[self addChild:sprite z:40];