2

私はiPhoneゲームに取り組んでいます.HUD要素を変更できるように、デバイスがゲームで自動回転を強制するときに呼び出されるコールバック関数があるかどうか知りたいと思っていました.

または、アプリが別のスレッドで回転したかどうかを確認する無限ループを実行しますか? 問題は、これが効果的な方法だとは思わないことです。誰もがこれに対する良い解決策を持っていますか?

4

2 に答える 2

2

あなたがしなければならないのはこれだけです:

あなたのdidfinishlaunching書き込みでこれ

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil];

次に、次のコールバック メソッドをコピーします。

- (void) didRotate:(NSNotification *)notification
{   
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

    if (orientation == UIDeviceOrientationLandscapeLeft)
    {
        NSLog(@"Landscape Left!");
        self.isLandscapeLeft=1;
    }else if(orientation == UIDeviceOrientationLandscapeRight){
         NSLog(@"Landscape Right!");
        self.isLandscapeLeft=0;
    }
}

同様に、ポートレイト モード、上向き、下向き、上下逆さま、横向き左向き、横向き右向きの向きを確認できます。:)

于 2012-05-24T05:44:04.457 に答える
1

はい、デバイスの向きがロックされていない限り、登録して聞くことができます。

UIDeviceOrientationDidChangeNotification

ここで見ることができますhttp://developer.apple.com/library/ios/#documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html

デバイスの向きがロックされる可能性を克服したい場合は、デバイスの加速度計を手動で監視する必要があります。

オリエンテーションが不可欠なゲームでは、最初の方法では少し遅延があるため、手動で監視することをお勧めします。

于 2012-05-24T05:45:31.607 に答える