2013-03-11 4 views
1

좋아, 나는 장치 또는 휴대 전화 또는 태블릿 등 여부를 확인할 수있는 간단한 DeviceCapabilites 클래스 작성했습니다.AS3/AIR : 휴대 전화가 세로 모드를 사용하는 경우 태블릿이 가로 모드를 사용하는 경우?

하지만 나는 사용자가 전화를 말할 수 있어야합니다. 세로 모드에 있어야하며, 타블렛에 있다면 가로 모드 만 사용하고 싶습니다 ... 어떤 아이디어입니까?

편집 : 명확하게 말하면 휴대 전화에서 방향을 세로 모드로 고정한 다음 태블릿에서 가로 방향을 사용하고 싶습니다.

답변

3

이와 비슷한? 당신은 setOrientation() 방법을 결합해야합니다

stage.autoOrients = false; 

if(YourDeviceCapsClass.isTablet) 
    stage.setOrientation(StageOrientation.ROTATED_LEFT); 
else 
    stage.setOrientation(StageOrientation.DEFAULT); 
+0

"StageOrientation.DEFAULT"는 장치의 기본값과 관련이 있습니다. 일반적으로 거의 모든 휴대 전화가 기본적으로 세로로 표시되어야하기 때문에 휴대 전화는 일반적으로 괜찮습니다. 일부 타블렛은 기본적으로 가로로 표시됩니다. (Asus Transformer Prime은 하나입니다.) –

+0

'stage.deviceOrientation'이 도움이 될 수 있습니까? –

+0

아니요, 'deviceOrientation' 및 orientation)은 똑같은 정보를보고하고 동일한 StageOrientation 상수에 의존하는 것처럼 보입니다. 기본 응답이 가로 또는 세로인지 확인하기 위해 추가 논리가 필요합니다. –

1

내가 두려워 좀 더 논리 바리스 Uşaklı으로 언급하고있다. 내가 언급 한 바에 따르면, StageOrientation.DEFAULT은 장치의 기본 방향을 나타내지 만 가로 또는 세로인지 여부는 알 수 없습니다.

다행히도이를 해결할 수있는 간단한 방법이 있습니다. 장치가 기본/거꾸로 된 방향인지 간단히 확인하고 너비/높이를 확인하십시오. 당신은 아마 조금 그것을 청소 수 있도록

var defaultPositionIsLandscape:Boolean = false; 
if (stage.orientation == StageOrientation.DEFAULT || stage.orientation == StageOrientation.UPSIDE_DOWN) { 
    defaultPositionIsLandscape = stage.stageWidth > stage.stageHeight; 
} 
else { 
    defaultPositionIsLandscape = stage.stageWidth < stage.stageHeight; 
} 

if (isTablet) { 
    if (defaultPositionIsLandscape) { 
     stage.setOrientation(StageOrientation.DEFAULT); 
    } 
    else { 
     stage.setOrientation(StageOrientation.ROTATED_LEFT); 
    } 
} 

논리는 좀 지저분하지만 그 일이 무슨의 일반적인 요점이다. 필자는 개인적으로 가장 쉬운 접근을 위해 DeviceCapabilities 클래스에 정적 인 읽기 전용 getter를 만들 것입니다. StageOrientation.UPSIDE_DOWN 인 경우 회전을 피하기 위해 확대 할 수도 있습니다. 기술적으로 정확한 방향이므로 거꾸로만 입력하십시오.

+0

고마워, 일단 내가 집에 있으면 그걸 확인하려고 노력할거야. – user2158208

0

답변이 없지만 다른 사람을 저장하고 싶습니다. 언젠가는. ipad에서 테스트 할 때 Josh가 게시 한 위의 코드는 항상 "defaultPositionIsLandscape"가 false가 될 것입니다 : (

관련 문제