#ios #objective-c #menu #cocos2d-iphone #texturepacker
#iOS #objective-c #меню #cocos2d-iphone #texturepacker
Вопрос:
-[CCFileUtils fullPathForFilename:resolutionType:] : cocos2d: Предупреждение: файл не найден: play.png
Игра Cocos2d …. чрезвычайно проста, только что запустил ее.
Это весь класс, и «play.png» и «sound.png» не найдены. Они оба расположены в «buttons.plist» (документы для упаковки текстур) и включены в этапы сборки.
Класс:
- (id) init {
if ((self = [super init]))
{
//[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"looped.mp3" loop:YES];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"buttons.plist"];
CGSize winSize = [CCDirector sharedDirector].winSize;
CCSprite* background;
if( winSize.width == 568 || winSize.height == 568 )
background = [CCSprite spriteWithFile: @"title_bg-5x.png"];
else
background = [CCSprite spriteWithFile: @"title_bg.png"];
[background setPosition: ccp(winSize.width/2, winSize.height/2)];
[self addChild: background];
CCMenuItemImage *play = [CCMenuItemImage itemWithNormalImage:@"play.png" selectedImage:@"play.png"
target:self selector:@selector(actionGame:)];
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
play.position = ccp(winSize.width/2,winSize.height/2);
}
else
{
play.position = ccp(winSize.width/2,winSize.height/2);
}
CCMenuItemImage *sound = [CCMenuItemImage itemWithNormalImage:@"sound.png"
selectedImage: @"sound.png"
target: self
selector:@selector(actionSound:)];
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
sound.position=ccp(winSize.width/2,winSize.height/2);
}
else
{
sound.position=ccp(winSize.width/2,winSize.height/2);
}
CCMenu *menu = [CCMenu menuWithItems:play, menu, nil];
[self addChild:menu z:4];
}
return self;
}
Навигатор:
На этапах сборки также есть все файлы .plist и .png.
Есть идеи, почему я получаю эту ошибку / почему кнопки не отображаются? Это только начало проекта, и у меня никогда раньше не было этой проблемы.
Спасибо за любую помощь, которую вы можете мне оказать.
Комментарии:
1. эти инициализаторы элементов меню не ищут фреймы спрайтов в атласе текстур. Чтобы использовать фрейм спрайта, используйте инициализатор пункта меню, который принимает существующий спрайт в качестве входных данных, и создайте этот спрайт с фреймом спрайта из атласа
2. Я не могу найти, что вы имеете в виду; CCMenuItemSprite?
3. Я попробовал CCSprite *test = [CCSprite spriteWithSpriteFrameName:@»play.png»]; CCMenuItemSprite *play = [CCMenuItemSprite itemWithNormalSprite:тест selectedSprite:цель теста: self selector:@selector (actionGate:)]; но ошибка гласила: причина: ‘дочерний элемент уже добавлен. Его нельзя добавить снова ‘
4. я думаю, вы не можете использовать один и тот же спрайт для обычного и выбранного
5. По какой-то причине он даже не может найти изображения из листа спрайтов? -[CCFileUtils fullPathForFilename:resolutionType:] : cocos2d: Предупреждение: файл не найден: (даже когда я меняю выбранный)
Ответ №1:
Это происходит при первой инициализации или после?
Если это произойдет после первого:
Проверьте, не использовали ли вы;
[[CCTextureCache sharedTextureCache] removeUnusedTextures];
Где-то после инициализации. Такая же проблема возникла и в моем проекте, и я думаю, что приведенный выше код работает не так, как я ожидал.