휴대 장치용 AIR 응용 프로그램에만 한정된 ActionScript API

다음 API는 휴대 장치의 AIR 응용 프로그램에서만 사용할 수 있습니다. 이러한 API는 현재 Flash Player나 데스크톱 버전의 AIR에서 작동하지 않습니다.

화면 방향 API

화면 방향 API를 사용하면 스테이지와 iPhone의 방향을 조정할 수 있습니다.

  • Stage.autoOrients - 장치가 회전할 때 응용 프로그램이 스테이지 방향을 자동으로 조정하도록 설정할지 여부를 나타냅니다. Flash Professional CS5 [iPhone 설정] 대화 상자에서 [자동 방향] 옵션을 선택하면 이 속성이 true 로 설정됩니다. 응용 프로그램 설명자 파일에서 autoOrients 요소를 true 로 설정할 수도 있습니다. 자세한 내용은 iPhone 응용 프로그램 설정 을 참조하십시오. Stage 객체에 대해 orientationChanging 이벤트 리스너를 추가하여 자동 방향 조정을 취소할 수 있습니다. 이 이벤트 객체의 preventDefault() 메서드를 호출하면 자동 방향 조정이 취소됩니다.

    자동 방향 조정을 사용할 때 최적의 결과를 얻으려면 Stage의 align 속성을 다음과 같이 설정합니다.

    stage.align = StageAlign.TOP_LEFT; 
    stage.scaleMode = StageScaleMode.NO_SCALE;
  • Stage.deviceOrientation - 장치의 실제 방향입니다. StageOrientation 클래스는 이 속성 값을 정의합니다.

  • Stage.orientation - 스테이지의 현재 방향입니다. StageOrientation 클래스는 이 속성 값을 정의합니다.

  • Stage.supportsOrientationChange - iPhone에서는 true 로, AIR 응용 프로그램에서는 false 로 설정됩니다.

  • Stage.setOrientation() - 스테이지의 방향을 설정합니다. 이 메서드의 매개 변수는 하나로, 새 스테이지 방향을 정의하는 문자열입니다. StageOrientation 클래스의 상수는 매개 변수에 사용할 수 있는 값을 정의합니다.

  • StageOrientation - 스테이지 방향 값을 정의합니다. 예를 들어 StageOrientation.ROTATED_RIGHT 는 장치의 기본 방향을 기준으로 오른쪽으로 회전된 스테이지를 나타냅니다.

  • StageOrientationEvent - 화면의 방향이 바뀔 때 Stage에서 전달하는 이벤트를 정의합니다. 이 이벤트는 사용자가 iPhone을 회전할 때 발생합니다. 두 가지 유형의 이벤트가 있습니다. Stage는 장치가 회전되면 orientationChanging 이벤트를 전달합니다. 스테이지의 방향이 조정되지 않도록 하려면 orientationChanging 이벤트 객체의 preventDefault() 메서드를 호출하십시오. 스테이지 방향 조정이 완료되면 Stage가 orientationChange 이벤트를 전달합니다.

현재, 화면 방향 API는 휴대 장치의 AIR 응용 프로그램에서만 유용합니다. 모바일 AIR 응용 프로그램과 데스크톱 AIR 응용 프로그램이 소스 코드를 공유하는 경우 API 지원 여부를 확인하려면 Stage.supportsOrientationChange 속성을 사용하십시오.

다음 예에서는 사용자의 장치 회전에 응답하는 방법을 보여 줍니다.

stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, 
            onOrientationChange); 
 
function onOrientationChange(event:StageOrientationEvent):void 
{ 
    switch (event.afterOrientation) { 
        case StageOrientation.DEFAULT: 
            // re-orient display objects based on 
            // the default (right-side up) orientation. 
            break; 
        case StageOrientation.ROTATED_RIGHT: 
            // Re-orient display objects based on 
            // right-hand orientation. 
            break; 
        case StageOrientation.ROTATED_LEFT: 
            // Re-orient display objects based on 
            // left-hand orientation. 
            break; 
        case StageOrientation.UPSIDE_DOWN: 
            // Re-orient display objects based on 
            // upside-down orientation. 
            break; 
}

이 예에서 다른 스테이지 방향에 대해서는 실제 코드 대신 주석을 달았습니다.

Stage 객체의 setOrientation() 메서드를 호출하여 스테이지의 방향을 변경할 수 있습니다. 방향 설정은 비동기식 작업입니다. orientationChange 이벤트를 수신하여 방향 변경이 완료되었는지 확인할 수 있습니다. 다음 코드에서는 스테이지를 오른쪽 방향으로 설정하는 방법을 보여 줍니다.

stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, 
            onOrientationChange); 
stage.setOrientation(StageOrientation.ROTATED_RIGHT); 
 
function onOrientationChange(event:StageOrientationEvent):void 
{ 
    // Code to handle the new Stage orientation 
}

스테이지를 회전하면 크기가 조정되고 Stage 객체는 resize 이벤트를 전달합니다. resize 이벤트에 대한 응답으로 스테이지의 표시 객체를 크기 조정하고 위치 변경할 수 있습니다.

NativeApplication.systemIdleMode 및 SystemIdleMode

NativeApplication.systemIdleMode 속성을 사용하여 iPhone이 대기 모드로 전환되지 않도록 할 수 있습니다. 기본적으로 일정 기간 동안 터치 스크린 상호 작용이 없는 경우 iPhone은 대기 모드로 전환됩니다. 대기 모드로 전환될 경우 화면이 어두워질 수 있습니다. 또한 iPhone이 잠금 모드가 될 수도 있습니다. 이 속성은 다음 두 가지 값 중 하나로 설정할 수 있습니다.

  • SystemIdleMode.NORMAL - iPhone이 정상 대기 모드 비헤이비어를 따릅니다.

  • SystemIdleMode.KEEP_AWAKE - 응용 프로그램에서 iPhone이 대기 모드로 전환되지 않도록 합니다.

이 기능은 휴대 장치에서만 지원됩니다. 데스크톱 운영 체제에서 실행되는 AIR 응용 프로그램에서는 지원되지 않습니다. 데스크톱에서 실행되는 응용 프로그램에서는 NativeApplication.systemIdleMode 속성을 설정해도 아무런 영향을 미치지 않습니다.

다음 코드는 iPhone 대기 모드를 비활성화하는 방법을 보여 줍니다.

NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;

CameraRoll

CameraRoll 클래스를 사용하여 iPhone 카메라 롤에 이미지를 추가할 수 있습니다. addBitmapData() 메서드는 iPhone 카메라 롤에 이미지를 추가합니다. 이 메서드의 매개 변수는 bitmapData 하나입니다. 이 매개 변수는 카메라 롤에 추가할 이미지가 포함된 BitmapData 객체입니다.

CameraRoll 기능은 휴대 장치에서만 지원됩니다. 데스크톱 운영 체제에서 실행되는 AIR 응용 프로그램에서는 지원되지 않습니다. 응용 프로그램에서 CamerRoll 기능을 지원하는지 여부를 런타임에 확인하려면 정적 CameraRoll.supportsAddBitmapData 속성을 확인하십시오.

addBitmapData() 메서드를 호출한 후에는 CameraRoll 객체에서 다음 두 가지 이벤트 중 하나를 전달합니다.

  • complete - 작업이 완료되었습니다.

  • error - 오류가 발생했습니다. 예를 들어 iPhone에 이미지를 저장할 충분한 공간이 없습니다.

다음 코드는 카메라 롤에 스테이지 이미지(화면 캡처)를 추가합니다.

if (CameraRoll.supportsAddBitmapData) 
{ 
    var cameraRoll:CameraRoll = new CameraRoll(); 
    cameraRoll.addEventListener(ErrorEvent.ERROR, onCrError); 
    cameraRoll.addEventListener(Event.COMPLETE, onCrComplete); 
    var bitmapData:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight); 
    bitmapData.draw(stage); 
    cameraRoll.addBitmapData(bitmapData); 
} 
else 
{ 
    trace("not supported."); 
} 
 
function onCrError(event:ErrorEvent):void 
{ 
    // Notify user. 
} 
 
function onCrComplete(event:Event):void 
{ 
    // Notify user. 
}

DisplayObject.cacheAsBitmapMatrix

cacheAsBitmapMatrix 속성은 cacheAsBitmap true 로 설정된 경우 표시 객체를 렌더링하는 방법을 정의하는 Matrix 객체입니다. 응용 프로그램에서 비트맵 버전의 표시 객체를 렌더링할 때 이 행렬을 변형 행렬로 사용합니다.

cacheAsBitmapMatrix 를 설정한 경우 응용 프로그램은 표시 행렬 대신에 해당 행렬을 사용하여 렌더링되는 캐시된 비트맵 이미지를 유지합니다. 표시 행렬은 표시 객체의 transform.concatenatedMatrix 값입니다. 이 행렬이 표시 행렬과 일치하지 않는 경우 필요에 따라 비트맵이 크기 조절되고 회전됩니다.

cacheAsBitmapMatrix 가 설정된 표시 객체는 cacheAsBitmapMatrix 값이 변경되는 경우에만 렌더링됩니다. 비트맵은 표시 행렬에 맞도록 적절히 크기 조절되거나 회전됩니다.

CPU 및 GPU 기반 렌더링은 모두 cacheAsBitmapMatrix 속성을 사용할 경우 장점이 있습니다. 그러나 일반적으로 GPU 렌더링의 경우에 장점이 더 큽니다.

참고: 하드웨어 가속을 사용하려면 Flash Professional CS5의 [iPhone 설정] 대화 상자에 있는 [일반] 탭에서 [렌더링]을 [GPU]로 설정하십시오. 또는 응용 프로그램 설명자 파일에서 renderMode 속성을 gpu 로 설정하십시오.

예를 들어 다음 코드에서는 표시 객체의 변형되지 않은 비트맵 표현을 사용합니다.

matrix:Matrix = new Matrix(); // creates an identity matrix 
mySprite.cacheAsBitmapMatrix = matrix; 
mySprite.cacheAsBitmap = true;

다음 코드에서는 현재 렌더링과 일치하는 비트맵 표현을 사용합니다.

mySprite.cacheAsBitmapMatrix = mySprite.transform.concatenatedMatrix; 
mySprite.cacheAsBitmap = true;

일반적으로 ID 행렬 ( new Matrix() ) 또는 transform.concatenatedMatrix 로 충분합니다. 그러나 다른 행렬(예: 축소된 행렬)을 사용하여 GPU에 다른 비트맵을 업로드할 수 있습니다. 예를 들어 다음 예제에서는 x축 및 y축에서 0.5만큼 크기 조절된 cacheAsBitmapMatrix 행렬을 적용합니다. GPU가 사용하는 비트맵 객체는 더 작지만 GPU에서 표시 객체의 transform.matrix 속성과 일치하도록 크기를 조정합니다.

matrix:Matrix = new Matrix(); // creates an identity matrix 
matrix.scale(0.5, 0.5); // scales the matrix 
mySprite.cacheAsBitmapMatrix = matrix; 
mySprite.cacheAsBitmap = true;

일반적으로 응용 프로그램에 표시되는 크기로 표시 객체를 변형하는 행렬을 선택합니다. 예를 들어 응용 프로그램에서 반으로 축소된 비트맵 버전의 스프라이트를 표시하는 경우 반으로 축소되는 행렬을 사용합니다. 응용 프로그램에서 현재 크기보다 큰 스프라이트를 표시하는 경우에는 해당 요인만큼 확장되는 행렬을 사용합니다.

cacheAsBitmapMatrix 속성이 설정된 표시 객체의 크기에 대한 실제 제한이 있습니다. 이 제한은 1020 x 1020 픽셀입니다. cacheAsBitmapMatrix 속성이 설정된 모든 표시 객체에 대해 총 픽셀 수에 대한 실제 제한이 있습니다. 이 제한은 약 4백만 픽셀입니다.

cacheAsBitmapMatrix 및 하드웨어 가속을 사용하는 경우 고려해야 할 사항이 많이 있습니다. 해당 속성을 설정해야 하는 표시 객체와 설정하지 않아야 하는 표시 객체를 아는 것이 중요합니다. 이 속성 사용에 대한 중요한 정보는 하드웨어 가속 을 참조하십시오.

GPU 렌더링 진단 기능을 사용하여 응용 프로그램의 디버그 빌드에서 GPU 사용을 진단할 수 있습니다. 자세한 내용은 iPhone 응용 프로그램 디버그 를 참조하십시오.

네트워킹 참고 사항

nativigateToURL() 함수에 다음 URL 스킴을 사용하면 외부 응용 프로그램에서 문서가 열립니다.

URL 스킴

nativeToURL() 호출 결과

예제

mailto:

메일 응용 프로그램에서 새 메시지를 엽니다.

str = "mailto:test@example.com"; 
var urlReq:URLReq = new URLRequest(str); 
navigateToURL(urlReq);

sms:

텍스트 메시지 응용 프로그램에서 메시지를 엽니다.

str = "sms:1-415-555-1212"; 
var urlReq:URLReq = new URLRequest(str); 
navigateToURL(urlReq);

tel:

휴대폰에서 특정 전화 번호에 전화를 겁니다(사용자 승인 시).

str = "tel:1-415-555-1212"; 
var urlReq:URLReq = new URLRequest(str); 
navigateToURL(urlReq);

iPhone 응용 프로그램은 https 요청과 같은 보안 트랜잭션 시 서버 인증을 위해 기존에 설치된 자체 서명 루트 인증서를 사용할 수 있습니다. 서버에서 리프 인증서뿐만 아니라 루트 인증서에 체인으로 연결된 모든 중간 인증서도 보내야 합니다.