0

MainMenu シーンに読み込まれる画像があり、ゲームの起動時に間違ったサイズで表示されますが、レベルを終了した後、再び MainMenu に戻り、画像は正しいサイズで表示されます。

画像が最初に表示されるときは、画面の左から右へのサイズの 4 分の 3 または 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

画面の位置を印刷します。位置が間違っている場合は、init ではなく onEnter にコードを入力してください。

スタック オーバーフローのこのスレッドを参照してください。

-(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 に答える