1 - (CCSprite *)maskedSpriteWithSprite:(CCSprite *)textureSprite maskSprite:(CCSprite *)maskSprite { 2 3 // 1 4 CCRenderTexture * rt = [CCRenderTexture renderTextureWithWidth:maskSprite.contentSizeInPixels.width height:maskSprite.contentSizeInPixels.height]; 5 6 // 2 7 maskSprite.position = ccp(maskSprite.contentSize.width/2, maskSprite.contentSize.height/2); 8 textureSprite.position = ccp(textureSprite.contentSize.width/2, textureSprite.contentSize.height/2); 9 10 // 3 11 [maskSprite setBlendFunc:(ccBlendFunc){GL_ONE, GL_ZERO}]; 12 [textureSprite setBlendFunc:(ccBlendFunc){GL_DST_ALPHA, GL_ZERO}]; 13 14 // 4 15 [rt begin]; 16 [maskSprite visit]; 17 [textureSprite visit]; 18 [rt end]; 19 20 // 5 21 CCSprite *retval = [CCSprite spriteWithTexture:rt.sprite.texture]; 22 retval.flipY = YES; 23 return retval; 24 25 }