2011-07-02 15 views
6

私は風景モード用に設計されたiOS用のゲームを作っています。それは、デバイスをポートレートモードにすると、画面の中央部分だけを満たしているインターフェースで停止します。 2つの風景モードを許可し、ポートレートの位置で停止しないようにアプリを強制するにはどうすればよいですか。AS3 - iOS強制ランドスケープモードのみ?

すべての公開設定を試しました。アスペクト比が横向きに設定され、自動オリエンテーションがオンになっている場合、アプリが他のランドスケープモードに回転していないというAUto Orientationのチェックボックスをオフにすると、アップルから自動的に拒否されます。

この小さな欠点を除いて、このアプリはすぐに使用できます。あなたが提供できるお手伝いをありがとう。

リッチ

+0

あなたがしたいこととAppleが拒否していることの違いが見当たりません...あなたは自動回転を残したいが、アプリは横向きに回転させ、Appleはすべての向きをサポートしないアプリケーションがすべての状態で機能するように意味を持ちます。 – Aaron

+0

Appleは、iPadアプリが風景と肖像画の両方を許可する必要はありません。 Flashを使ってipaを作成することで、私の風景アプリはポートレートの位置で停止し、コンテンツは収まるように縮小されました。以下のコードは、この問題を解決するために働いています。 – Rich

答えて

11

私は数日前にアドビのフォーラムで、このオーバーへの答えを見つけました。

[縦横比]を[自動]に設定します。

自動オリエンテーションを許可に設定します。

+0

素晴らしい、完璧に働いた。本当にありがとう! – Rich

+0

いいね、今何を意味しているのか分かります。 – Aaron

+2

iOS6 +でpreventDefault()が機能しなくなりました –

2

は別の、類似したとはいえ、これを行う方法は、アプリケーション記述子で景観にアスペクト比を設定することです。..

var startOrientation:String = stage.orientation; 
if (startOrientation == StageOrientation.DEFAULT || startOrientation == StageOrientation.UPSIDE_DOWN) 
    { 
    stage.setOrientation(StageOrientation.ROTATED_RIGHT); 
    } 
    else 
    { 
    stage.setOrientation(startOrientation); 
    }      

stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING, orientationChangeListener); 

function orientationChangeListener(e:StageOrientationEvent) 
{ 
    if (e.afterOrientation == StageOrientation.DEFAULT || e.afterOrientation == StageOrientation.UPSIDE_DOWN) 
    { 
    e.preventDefault(); 
    } 
} 

が私のためにうまく働いた:

は、その後、あなたのメインのクリップにこのコードを使用しますautoOrientsをfalseに設定します。アプリケーションがロードされ、orientationChangingイベントを待機すると、autoOrientsを有効にします。次のようにFlash Builderの4.6で、これを行うことができる。

記述子:

<aspectRatio>landscape</aspectRatio> 
<autoOrients>false</autoOrients> 

アプリケーションコード:

private function applicationCompleteHandler():void { 
    stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING, stageOrientationChangingHandler); 
    stage.autoOrients = true; 
} 

private function stageOrientationChangingHandler(event:StageOrientationEvent):void { 
    if (event.afterOrientation == StageOrientation.DEFAULT || event.afterOrientation == StageOrientation.UPSIDE_DOWN) { 
     event.preventDefault(); 
    } 
} 

それはあなたにもアプリケーションが明示的な次元を持っていることを確認する必要がありますように見えます;それ以外の場合は、ステージが方向を変えなくてもビューのサイズが変更されることがあります。

ご覧ください。 http://bugs.adobe.com/jira/browse/SDK-32082

1

をiOSの上でpreventDefaultは、もはや動作するため、上記の答えは、私のために動作しませんでした。

まだまだ幸運を得ていない人のために...ここで私がしたことがあります。

私が欲しかった:&すべてのAndroidタブレットデバイスは、任意の方向に

たiPhoneやiPod、景観を強制する&すべてのスモールスクリーンデバイス(縦または横にできるようにし、自動回転させるように

計算されましたかあなたの場合は、強制的な肖像画をしたいかもしれない)。

I Did:

IN my -app。XML:ActionScriptで

<aspectRatio>any</aspectRatio> 
<autoOrients>true</autoOrients> 

:私はあなたが簡単にStageAspectRatio.PORTRAITを入れたりしても、論理のiPadのみ、または何かに逆のロジックを使用することができると思いますが

 var screenDPI:Number = Capabilities.screenDPI; 
     var resolutionX:Number = Capabilities.screenResolutionX; 
     var resolutionY:Number = Capabilities.screenResolutionY;    
     var numDiagonalDistance:Number = Math.round(Math.sqrt((resolutionX*resolutionX)+(resolutionY*resolutionY)));    
     var numDiagonalInches:Number = numDiagonalDistance/screenDPI; 


      if(numDiagonalInches<6){ 
       MainData.SMALL_DEVICE=true; 
      }else{ 
       MainData.SMALL_DEVICE=false;       
      } 


     if(MainData.SMALL_DEVICE){ 
      this.stage.setAspectRatio(StageAspectRatio.LANDSCAPE); 
     } 

。がんばろう!

EDITED:この方法でもまだ問題があるため、実際に編集しています。あなたは景色を見ることができますが、それはいつもあなたがデバイスをどのように保持しているのかを指向したものではありません...

編集されたこと(2/27-2014):私が-swf-version 23 AIR 4.0)この問題は最終的に解決されます。

関連する問題