2013-07-24 2 views
0

Перед лицом неизвестной ошибки со вчерашнего дня. Я создаю CCSprites или CCMenuItemImage, но вместо фонового изображения он устанавливает черный фон. Следующий мой код, я знаю его штраф, потому что я использовал его много раз.CCSprite не отображается Фоновое изображение

[[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

Вы уверены, что ваш слой определен правильно? как вы его создали? – giorashc

ответ

0

Я предполагаю, что вы загружаете этот спрайт лист (challenge_screen.plist и связанный с ним файл текстуры, который часто является challenge_screen.png или challenge_screen.pvr.*) в цветном режиме, который не имеет прозрачности.

Сначала убедитесь, что связанный с ним файл текстуры показывает прозрачность. Возможно, что-то испортилось с этой конкретной текстурой.

После того, как вы отметили, что если связанная текстура равна .PNG., тогда вы должны установить формат загрузки текстуры в код следующим образом. Вы должны установить формат текстуры перед загрузкой самой текстуры (текстура загружается как побочный эффект добавления SpriteFrames в кеш).

[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA4444]; 
    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"challenge_screen.plist"];` 
    ... 

Вы также можете попробовать режим kCCTexture2DPixelFormat_RGBA8888 если RGBA444 производит полосатость с графикой, и если вы хорошо о свободной памяти.

С другой стороны, если текстура является PVR.*, тогда формат, в котором загружаются текстуры, встроен в файл, а настройка формата текстуры в коде не имеет значения. Затем вам необходимо будет восстановить свой лист спрайта в соответствующем формате (через TexturePacker или аналогичный).

0

Ваш фон в листе спрайта? Если да, попробуйте:

CCSprite *bg = [CCSprite spriteWithSpriteFrameName:@"ads.png"]; 

Если это пункт меню, и вы знаете, что код работает, это должно быть проблемой с активами.

Смежные вопросы