2011-07-02 6 views
6

가로 모드 용으로 설계된 iOS 용 게임을 제작했습니다. 기기를 세로 모드로 설정하면 화면의 중간 부분 만 채우는 인터페이스로 끝납니다. 앱이 두 가지 가로 모드 만 허용하고 세로 위치에서는 멈추지 않게하려면 어떻게해야합니까?AS3 - iOS 강제 프리 모드?

모든 게시 설정을 시도했습니다. 가로/세로 비율이 가로로 설정되어 있고 자동 방향이 선택되어있는 경우, 앱이 다른 가로 모드로 회전하지 않는다고 AUto Orientation의 선택을 취소하면 Apple에서 자동으로 거부하는 것으로 들립니다.

이 응용 프로그램은이 작은 결함을 제외하고 갈 준비가되어 있습니다. 제공 할 수있는 도움에 감사드립니다.

리치

+0

당신이하고 싶은 것과 애플이 거부 한 것의 차이점을 놓치고 있습니다 ... 당신은 자동으로 회전하고 싶지만 애플 리케이션을 가로 방향으로 돌리고 애플은 모든 방향을 지원하지 않는 것을 거부합니다. 응용 프로그램이 모든 상태에서 작동하는 데는 의미가 있습니다. – Aaron

+0

애플은 iPad 앱이 가로 및 세로 모두 허용하도록 요구하지 않고, 가로 또는 세로 방향 모두 필요합니다. 플래시를 내장 한 ipa 덕분에 내 풍경 앱이 초상화 위치에서 멈추고 내용에 맞게 축소되었습니다. 아래 코드는 문제를 해결하기 위해 노력했습니다. – Rich

답변

11

나는 몇 일 전 어도비 포럼에 대한 답을 통해 발견했다.

가로 세로 비율을 자동으로 설정하십시오.

자동 방향을 허용으로 설정하십시오.

+0

환상적이며 완벽하게 작동합니다. 정말 고마워! – Rich

+0

좋아, 지금 무슨 뜻인지 알 겠어. – Aaron

+2

iOS6 +에서 preventDefault()가 더 이상 작동하지 않습니다. –

2

는 또 다른, 비슷한 불구하고,이 작업을 수행하는 방법은 응용 프로그램 설명자에서 풍경에 aspectRatio을 설정하는 것입니다 ..

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를 활성화합니다. 다음과 같이 플래시 빌더 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

대답은 위의 때문에로 preventDefault가 더 이상 작동 iOS에서 나를 위해 작동하지 않았다.

아직 행운을 얻지 못하고있는 사람에게 ... 내가 한 일은 다음과 같습니다.

Ipad에 & 모든 안드로이드 태블릿 장치는

는 아이폰, 아이팟, & 모든 작은 화면 장치는 풍경을 강제로 어떤 방향으로 세로 또는 가로 및 자동 회전 할 수 있도록 (또는 :

나는 원 어쩌면 당신의 경우에는 강제 초상화를 원할 것입니다.)

내가 했어 :

IN my -app.XML : ActionScript에서

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

: 나는 당신이 쉽게 StageAspectRatio.PORTRAIT을 넣어 또는 로직 아이 패드 전용 또는 뭔가 반대 논리를 사용할 수 있습니다 생각하지만

 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 :이 방법도 여전히 문제가 있기 때문에 실제로 편집 중입니다. 당신은 풍경을 볼 수는 있지만 장치를 들고있는 방법에 대한 방향은 아닙니다. ...

EDITED AGAIN (2-27-2014) : -swf-version 23 (지금 AIR 4.0)이 문제는 마침내 해결되었습니다.

관련 문제