适用于模拟器,但不适用于设备?

时间:2011-02-16 03:12:11

标签: objective-c cocos2d-iphone


我遇到了一个我正在搞乱的游戏问题而无法理解它。

我在一个名为“Map”的类中有一个CCMenu,它让用户可以选择要进入的游戏级别。我为每个menuItem设置了一个标签,并将所有menuItems的选择器设置为一个名为“goToScene”的方法。在该方法中,我计算选择了哪个级别,并使用sharedDirector将Map场景替换为适当的级别层。我将列出以下代码。

代码在模拟器中工作正常,但在我的设备(iphone 4)上,当我点击任何menuItems时,它会冻结。我之前有过“在模拟器上工作但没有在设备上工作”的问题,结果证明我的一张图片上出现了大写错误....所以我检查了所有资源并且它们很好。我也清理了这个项目,但也没有帮助。

提前感谢任何有关此事的想法。

斯科特

        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 个答案:

答案 0 :(得分:1)

任何iOS设备都要求文件名区分大小写,但如果它们的大小写不同,则模拟器可以找到它们。所以请务必仔细检查代码中的文件名。

答案 1 :(得分:0)

好吧......我明白了,所以我想我会发布它,以防它可以帮助别人。 在我的GameScene类中,我在init方法中将HUDLayer加载到屏幕顶部,而在HUDLayer类中,我有一个暂停按钮。在我的代码中,我搞砸了文件的大小写。所以它原来是这个问题的常见嫌疑人...我的一个资源输入错误,模拟器让它滑动,而设备不会...