Работает на симуляторе, но не на устройстве? - PullRequest
0 голосов
/ 16 февраля 2011


У меня возникла проблема с игрой, с которой я возился, и не могу ее понять.

У меня есть CCMenu в классе под названием «Карта», который дает пользователю выбор уровня игры. Я установил тэг для каждого menuItem и установил селектор для всех menuItems для метода с именем «goToScene». В этом методе я выясняю, какой уровень был выбран, и использую sharedDirector, чтобы заменить сцену карты соответствующим уровнем уровня. Я перечислю код ниже.

Код отлично работает в симуляторе, но на моем устройстве (iphone 4) он зависает, когда я нажимаю на любой из пунктов меню. У меня раньше была проблема «работает на симуляторе, но не на устройстве», и это оказалось ошибкой в ​​заглавных буквах на одном из моих изображений…, поэтому я проверил все свои ресурсы, и они хороши. Я также очистил проект, но там тоже не помог.

Заранее спасибо за любые идеи по этому поводу.

Scott

        level= [CCSprite spriteWithFile:@"level.png"];
    CCMenuItemImage *one =[CCMenuItemImage itemFromNormalImage:@"one.png" selectedImage:@"one.png" target:self selector:@selector(goToScene:)];
    CCMenuItemImage *two= [CCMenuItemImage itemFromNormalImage:@"two.png" selectedImage:@"two.png" target:self selector:@selector(goToScene:)];
    CCMenuItemImage *three= [CCMenuItemImage itemFromNormalImage:@"three.png" selectedImage:@"three.png" target:self selector:@selector(goToScene:)];

    one.tag=1;
    two.tag=2;
    three.tag=3;

    CCMenu *menu = [CCMenu menuWithItems: one,two,three,nil];
    [menu alignItemsHorizontally];

    level.position = ccp(screenSize.width/2,screenSize.height-50);
    [self addChild:level];
    [self addChild:menu];





    [self schedule: @selector(tick:)];
}
return self;

}

А вот и метод, который вызывается. Это где замерзает ...

-(void)goToScene:(id)sender{

CCMenuItem *temp = (CCMenuItem *)sender;
if (temp.tag==1) {
    GameScene *scene = [[GameScene alloc] init];
    Level1 *sc = [[Level1 alloc] init];
    [scene addChild:sc];
    [[CCDirector sharedDirector]replaceScene:scene];
}
if (temp.tag==2) {
    GameScene *scene = [[GameScene alloc]init];
    Level2 *sc = [[Level2 alloc]init];
    [scene addChild:sc];
    [[CCDirector sharedDirector]replaceScene:scene];

}
if (temp.tag==3) {

    GameScene *scene = [[GameScene alloc]init];
    Level3 *sc = [[Level3 alloc]init];
    [scene addChild:sc];
    [[CCDirector sharedDirector]replaceScene:scene];
}

}

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

любое устройство iOS требует, чтобы имена файлов были чувствительными к регистру, но симулятор может найти их, если они не имеют одинаковую прописную букву ... поэтому всегда проверяйте имена файлов в вашем коде.

0 голосов
/ 17 февраля 2011

Хорошо ... Я понял это, поэтому я решил опубликовать это в случае, если это может помочь кому-то еще. В моем классе GameScene я загружаю HUDLayer в верхнюю часть экрана в методе init, а в классе HUDLayer у меня есть кнопка паузы. В моем коде я испортил заглавные буквы файла. Таким образом, это оказалось обычным подозреваемым для этой проблемы ... один из моих ресурсов был напечатан неправильно, и симулятор позволил ему скользить, пока устройство не будет ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...