[cocos2d] iPhone5の解析度(640px × 1136px)にアプリを対応させる。

[cocos2d] iPhone5の解析度(640px × 1136px)にアプリを対応させる。
   

iPhone5では、Retinaが4インチになり、画面の解析度も細長くなりました。
これまで、私はiPhone4Sを使い実機のテストをしていたのですが、いよいよアプリを公開する準備をするということで、iPhone5でのテストを開始しました。

テスト環境

テストをするには、以下の3通りの方法があります。
  • iPhone 5
  • iPod touch(Retina4インチ)
  • iOSシミュレーター

  • 一番手軽にできるのはiOSシミュレーターを使う方法です。
    [デバイス]を[iPhone Retina4-inch]にして、xcodeでビルドすれば、どのように配置されているかが分かります。
    2013 2 28 ddes

    ただ、実際に操作方法などは、実機を使わないとわからないので、iPhone5かiPodtouchで試してみましょう。
    私はiPod Touchを購入しました。
    最新モデル 第5世代 Apple iPod touch 32GB ホワイト&シルバー MD720J/A最新モデル 第5世代 Apple iPod touch 32GB ホワイト&シルバー MD720J/A


    アップル
    売り上げランキング : 116

    Amazonで詳しく見る

    cocos2dでの対応

    cocos2dでの対応は主にpositionの問題だと思います。
    CCSpriteなどをCCLayerに貼り付けている場合が多いかと思いますが、これがiPhone5になったことで位置がおかしくなっています。
    これは個別に修正をしていく必要があります。

    私はまずAppDelegate.m内でiPhone5を利用しているかの判定するクラス・メソッドを作成して、それを個々に呼び出して修正しました。
    
    //AppDelegate.m
    
    screenSize = [UIScreen mainScreen].currentMode.size;
    maxDimensionInPixels = MAX(screenSize.width ,screenSize.height);
    iPhone5 = (maxDimensionInPixels == 1136); //iPhone5はBOOL型のプロパティ
    
    
    //クラス・メソッド
    +(BOOL)isiPhone5{
        
        
        return iPhone5;
    }
    


    AppDelegate.mで作成したクラス・メソッドを、例えばCCSpriteのpositionを設定する際に利用します。
    CCSprite*sprite = [[CCSprite alloc] initWithFile:@"icon.png"];
    
    //if文でpositionを変えている。
    if([AppDelegate isiPhone5]){
    
       sprite.position = ccp(300,200);
    
    }else{
    
       sprite.position = ccp(250,200);
    
    }
    

    その他の修正点

    iPhone5用に画像を新たに用意する必要が出てくる時もあります。
    例えば、640*960で画像を作成した場合、iPhone5になると隙間が開いているように見えます。

    これに関しては個別に対応していく必要があるでしょう。

    Related Posts Plugin for WordPress, Blogger...