0

我有一个加载到 MainMenu 场景的图像,并且在游戏启动时显示为错误大小,但在完成关卡后再次返回 MainMenu,图像显示为正确大小。

第一次出现时,图像从左到右显示为屏幕尺寸的四分之三或 4/5。图像周围有一个白色背景,所以我可以在主菜单第一次启动时在屏幕右侧看到一个黑色的高矩形。但是在一场比赛之后,它的大小是正确的,并且白色背景图像的大小是正确的。

有人遇到过这种情况吗?

这是 MainMenuLayer 的初始化代码:

-(id)init {
    if( (self=[super initWithColor:ccc4(255,255,255,255)]) ) {
        [[GameManager sharedGameManager] playBackgroundTrack:BACKGROUND_TRACK_MAIN_MENU];
        CGSize screenSize = [CCDirector sharedDirector].winSize;

        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
            CCSprite *background = [CCSprite spriteWithFile:@"MainMenu-iPad.png"];
            [background setPosition:ccp(screenSize.width/2,screenSize.height/2)];
            [self addChild:background];
            [self displayMainMenu];
        } else {
            CCSprite *background = [CCSprite spriteWithFile:@"MainMenu.png"];
            [background setPosition:ccp(screenSize.width/2,screenSize.height/2)];
            [self addChild:background];
            [self displayMainMenu];
        }
-

虽然它在模拟器上运行良好......

4

2 回答 2

1

打印屏幕位置,如果位置错误,则将代码放入 onEnter 而不是 init。

请参阅堆栈溢出中的此线程。

-(id)init {
    if( (self=[super initWithColor:ccc4(255,255,255,255)]) ) {
       }
     return self;
}



-(void)onEnter {
        [super onEnter];
        [[GameManager sharedGameManager] playBackgroundTrack:BACKGROUND_TRACK_MAIN_MENU];
        CGSize screenSize = [CCDirector sharedDirector].winSize;

         CCSprite *background = [CCSprite spriteWithFile:@"MainMenu.png"];
         [background setPosition:ccp(screenSize.width/2,screenSize.height/2)];
         [self addChild:background];
         [self displayMainMenu]; 
}
于 2013-02-26T04:42:22.367 回答
0

即使在清理和构建之后,图像显然也被缓存了!我最终通过删除原始图像并添加相同的图像来替换图像,但使用一些标记只是为了确保它被替换。

于 2013-03-03T01:53:59.583 回答