私はiPhoneゲームに取り組んでいます.HUD要素を変更できるように、デバイスがゲームで自動回転を強制するときに呼び出されるコールバック関数があるかどうか知りたいと思っていました.
または、アプリが別のスレッドで回転したかどうかを確認する無限ループを実行しますか? 問題は、これが効果的な方法だとは思わないことです。誰もがこれに対する良い解決策を持っていますか?
私はiPhoneゲームに取り組んでいます.HUD要素を変更できるように、デバイスがゲームで自動回転を強制するときに呼び出されるコールバック関数があるかどうか知りたいと思っていました.
または、アプリが別のスレッドで回転したかどうかを確認する無限ループを実行しますか? 問題は、これが効果的な方法だとは思わないことです。誰もがこれに対する良い解決策を持っていますか?
あなたがしなければならないのはこれだけです:
あなたの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;
}
}
同様に、ポートレイト モード、上向き、下向き、上下逆さま、横向き左向き、横向き右向きの向きを確認できます。:)
はい、デバイスの向きがロックされていない限り、登録して聞くことができます。
UIDeviceOrientationDidChangeNotification
ここで見ることができますhttp://developer.apple.com/library/ios/#documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html
デバイスの向きがロックされる可能性を克服したい場合は、デバイスの加速度計を手動で監視する必要があります。
オリエンテーションが不可欠なゲームでは、最初の方法では少し遅延があるため、手動で監視することをお勧めします。