从昨天开始,我面临着一个未知的错误。我正在创建CCSprites或CCMenuItemImage,但它设置黑色背景而不是背景图像。以下是我的代码,我知道它很好,因为我多次使用它。
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"challenge_screen.plist"];
CCSprite *bg = [CCSprite spriteWithFile:@"ads.png"];
[bg setPosition:background.position];
// [bg setContentSize:CGSizeMake(100, 100)];
[self addChild:bg z:1000];
//CGSize windowSize = [[CCDirector sharedDirector] winSize];
CCMenuItemImage *coinMenuItem = [[CCMenuItemImage alloc] initWithNormalSprite:[CCSprite spriteWithSpriteFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"coin.png"]] selectedSprite:nil disabledSprite:nil block:^(id sender)
{
NSLog(@"I am Tapped");
}];
coinMenuItem.position = ccp(100, 100);
CCMenu *mainMenu = [CCMenu menuWithItems:coinMenuItem, nil];
mainMenu.position = CGPointZero;
[self addChild:mainMenu];
附件是截图。
提前致谢。
答案 0 :(得分:0)
我猜你是在一个没有透明度的颜色模式下加载这个精灵表(challenge_screen.plist
和相关的纹理文件,通常是challenge_screen.png
或challenge_screen.pvr.*
)
首先,确保关联的纹理文件本身显示透明度。也许有些东西搞砸了这种特殊的纹理。
检查完毕后,如果相关纹理为.PNG.
,则必须在此代码中设置纹理加载格式。您必须在加载纹理本身之前设置纹理格式(纹理加载为将SpriteFrame添加到缓存的副作用)。
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA4444];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"challenge_screen.plist"];`
...
如果kCCTexture2DPixelFormat_RGBA8888
与您的图片产生条带,并且您对可用内存有好处,也可以尝试RGBA444
模式。
另一方面,如果纹理是PVR.*
,那么纹理加载的格式嵌入到文件中,并且在代码中设置纹理格式没有区别。然后,您需要使用适当的格式(通过 TexturePacker 或类似方法)重新生成精灵表。
答案 1 :(得分:0)
您的背景是否在精灵表中?如果是这样,试试:
CCSprite *bg = [CCSprite spriteWithSpriteFrameName:@"ads.png"];
如果是菜单项并且您知道代码有效,则必须是资产问题。