2012-10-01 14 views
12

Aygıtın yatay ya da yatay-yatay yönde olmasını sağlayan bir oyun oluşturuyorum ve oynatıcı duraklatılırken yönlendirmeyi değiştirebilir. Yaptıkları zaman, oyunun ivmeölçer yönünü oryantasyona göre nasıl değiştirdiğini değiştirmem gerekiyor.iOS 6 - Yönlendirme değiştiğinde özel kod nasıl çalıştırılır

iOS'ta 5 Değişiklikleri yakalamak ve değişkenlerimi değiştirmek için willRotateToInterfaceOrientation öğesini kullandım, ancak bu iOS6'da kullanımdan kaldırıldı. Benim mevcut kod şöyle görünür:

if(toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)  
     rect = screenRect; 

    else if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight){ 
     rect.size = CGSizeMake(screenRect.size.height, screenRect.size.width); 
    GameEngine *engine = [GameEngine sharedEngine]; 
    if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft){ 
     engine.orientation = -1; 
    } else { 
     engine.orientation = 1; 
    } 
} 

Ben yedek UIViewController sınıfında viewWillLayoutSubviews yöntemi olduğunu anlıyoruz. Ben cocos2d 2.1 bu oyunu inşa ediyorum ve demo projesinde bir UIViewController sınıfı görünmüyor, bu yüzden ben nasıl dahil etmek için açık ve ben bu işi yapmak için kod nasıl görünmelidir açık değil.

cevap

36

cihaz yönü değişikliklerine ilişkin dinleyin:

haberdar
[[NSNotificationCenter defaultCenter] 
     addObserver:self 
      selector:@selector(deviceOrientationDidChangeNotification:) 
       name:UIDeviceOrientationDidChangeNotification 
      object:nil]; 

, UIDevice gelen cihaz yönünü olsun: Verilen görev için

- (void)deviceOrientationDidChangeNotification:(NSNotification*)note 
{ 
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 
    switch (orientation) 
    { 
     // etc... 
    } 
} 
+3

+1 doğru seçeneği. Sadece yukarı-aşağı yönelim değişiklikleri hakkında bilgilendirileceğiniz ve 'UIInterfaceOrientation ...' ve 'UIDeviceOrientation ...' – Till

+0

@Darren arasındaki farka dikkat edeceğinizden emin olun. Teşekkürler! –

+0

@Till - aşağıya bakacak şekilde, dikey veya dikey olarak yönlendirildiğinde ne anlama geliyor? Veya başka bir şey? Ayrıca, DeviceOrientation ve InterfaceOrientation öğelerinin birden çok görünüm gibi özel durumlar dışında hemen hemen her zaman aynı olduğunu veya InterfaceOrientation'ın aygıt yönelimini eşleşmemesi için programsal olarak ayarlandığını varsaydım. Veya bunun ortaya çıkmasına neden olabilecek başka örnekler var mı? –