2012-05-17 1 views
3

AS3 만있는 Flex Builder에서 응용 프로그램을 개발했습니다 (flex 자료 없음). flex에서는 다음 코드로 응용 프로그램의 dpi를 설정할 수 있습니다.AS3 모바일 응용 프로그램에서 ApplicationDPI 설정

<s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" applicationDPI="320"> 

그러나 AS3 만 사용합니다. 실행 시간 (AS3 사용)에서 응용 프로그램의 DPI를 변경할 수 없다는 것을 읽었지 만 프로젝트 설정, 컴파일러 설정 또는이 작업을 수행 할 수있는 다른 방법이 있습니까?

또한 기본 응용 프로그램의 DPI 설정은 무엇입니까?

인터넷에서 찾을 수 없기 때문에 여기에서 질문하십시오 (플렉스 기반 솔루션 만 해당).

답변

3

모바일에서 DPI를 설정하는 것은 하드웨어와 전적으로 전화 및 화면에 따라 다릅니다. Flex 모바일에서 applicationDPI를 설정하면 Flex가 자동으로 자산의 크기를 조정하게됩니다.

자동 크기 조정. 개발자는 응용 프로그램에 applicationDPI 속성을 설정하여 응용 프로그램에 대상 DPI를 지정할 수 있습니다. 명시 적으로 설정하면 개발자는 지정된 DPI의 장치에서 실행중인 것처럼 스킨과 레이아웃을 설정해야합니다. 런타임에 장치가 지정된 대상 DPI와 다른 DPI를 갖는 경우 Flex는 전체 응용 프로그램을 자동으로 조절하여 응용 프로그램과 해당 컨트롤의 대략적인 실제 크기를 유지합니다. 예를 들어 응용 프로그램이 160 DPI를 대상으로하는 경우 240 DPI 장치에서 1.5 배 확장됩니다. 이 기능을 사용하지 않기로 선택하면 런타임에 사용자 정의 스킨과 뷰 레이아웃이 다른 픽셀 밀도에 맞게 올바르게 조정되어 있어야합니다. Source

AS3 모바일 프로젝트에서 직접 처리해야합니다.

Capabilities.screenDPI을 사용하면 현재 DPI를 얻을 수 있지만 이후에는 애셋을 크기 조정 비율로 사용할 수 있다고 생각합니다. 이를 수행하는 한 가지 방법은 원래 게임 폭으로 시작하는 것입니다.

private static const WIDTH:Number = 1024; 

는 그런 다음,

var ratio:Number = stage.fullScreenWidth/WIDTH; 

를 사용 비율을 얻을 이제이 계정에 장치의 회전을하지 않을 자산

myBitmap.scaleX = myBitmap.scaleY = ratio; 

이 적용 할 수 있습니다 따라서 fullScreenWidth/Height를 뒤집을 수 있습니다. 당신이 희망이 매우 도움이 정보를 원하시면

+0

감사를하는 데 도움이

if (stage.fullScreenWidth > stage.fullScreenHeight){ //portrait } else { //landscape } 

같은 것을 할 필요가 거라고 확인하세요! 이것은 해결책으로 이어진다. 그러나 이미지에서 흐릿한 픽셀을 피하는 방법을 알려주시겠습니까? 나는 SVG/FXG를 사용할 수 없다. 큰 이미지를 사용하더라도 끔찍한 것처럼 보일 수 있습니다. – Codebeat

+0

@Erwinus 비트 맵에서 부드럽게 설정을 true로 설정할 수 있습니다. 그래도 작동하지 않으면 화면 DPI마다 다른 자산이 필요할 수 있습니다. 이 URL은 Flex 용이지만 대신 as3 메서드를 사용할 수 있습니다. http://help.adobe.com/ko_KR/flex/mobileapps/WS19f279b149e7481c682e5a9412cf5976c17-8000.html#WS19f279b149e7481c-6bd5f36412cc794cd7a-8000 – francis

+0

사실을 부드럽게하는 것이 트릭입니다! 기본적으로 켜지지 않는 이유는 무엇입니까? – Codebeat