AIR의 드래그 앤 드롭의 기초

Adobe AIR 1.0 이상

AIR 응용 프로그램의 드래그 앤 드롭 사용에 대한 간략한 설명과 코드 예제를 보려면 Adobe Developer Connection의 다음 퀵 스타트 문서를 참조하십시오.

끌어 놓기 API에는 다음과 같은 클래스가 포함됩니다.

패키지

클래스

flash.desktop

끌어 놓기 API와 함께 사용되는 상수는 다음과 같은 클래스에서 정의됩니다.

flash.events

NativeDragEvent

끌어 놓기 동작 단계

끌어 놓기 동작에는 세 단계가 있습니다.

시작
사용자는 마우스 버튼을 누른 채 구성 요소 또는 구성 요소 내 항목에서 드래그함으로써 끌어 놓기 작업을 시작합니다. 드래그된 항목의 소스 구성 요소가 일반적으로 드래그 시작자로 지정되며 nativeDragStartnativeDragComplete 이벤트를 전달합니다. Adobe AIR 응용 프로그램은 mouseDown 또는 mouseMove 이벤트에 대한 응답으로 NativeDragManager.doDrag() 메서드를 호출함으로써 드래그 작업을 시작합니다.

AIR 응용 프로그램 외부에서 드래그 작업이 시작되는 경우 nativeDragStart 또는 nativeDragComplete 이벤트를 전달하는 시작자 객체가 없습니다.

드래그
마우스 버튼을 누른 채 사용자는 마우스 커서를 다른 구성 요소, 응용 프로그램 또는 데스크톱으로 이동합니다. 드래그가 진행 중인 동안 시작자 객체는 nativeDragUpdate 이벤트를 전달합니다. 단, Linux 환경인 경우 AIR에서 이 이벤트가 전달되지 않습니다. 사용자가 AIR 응용 프로그램에서 가능한 드롭 대상 위에서 마우스를 움직이면 드롭 대상은 nativeDragEnter 이벤트를 전달합니다. 이벤트 핸들러는 이벤트 객체를 검사하여 드래그된 데이터가 대상이 허용하는 포맷으로 사용할 수 있는지 여부를 확인하고, 사용할 수 있다면 NativeDragManager.acceptDragDrop() 메서드를 호출하여 데이터를 대상 위에 드롭합니다.

드래그 동작이 대화형 객체 위에 머물러 있을 경우 해당 객체는 nativeDragOver 이벤트를 전달합니다. 대화형 객체에 대한 드래그 동작이 중단되면 nativeDragExit 이벤트가 전달됩니다.

드롭
사용자는 유자격 드롭 대상 위에서 마우스를 놓습니다. 대상이 AIR 응용 프로그램 또는 구성 요소일 경우 대상 객체는 nativeDragDrop 이벤트를 전달합니다. 이벤트 핸들러는 이벤트 객체로부터 전송된 데이터에 액세스합니다. 대상이 AIR 외부에 있을 경우 운영 체제 또는 다른 응용 프로그램이 드롭을 처리합니다. 두 경우 모두 시작 객체는 nativeDragComplete 이벤트를 전달합니다(드래그가 AIR 내부에서 시작된 경우).

NativeDragManager 클래스는 드래그인 및 드래그아웃 동작 모두 제어합니다. NativeDragManager 클래스의 모든 멤버는 정적이며 이 클래스의 인스턴스를 만들지 않습니다.

Clipboard 객체

응용 프로그램 또는 구성 요소의 내부로 또는 외부로 드래그된 데이터는 클립보드 객체에 보관됩니다. 하나의 클립보드 객체는 동일한 정보를 서로 다르게 표시할 수 있도록 함으로써 다른 응용 프로그램이 해당 데이터를 이해 및 사용할 수 있는 가능성을 높입니다. 예를 들어 이미지는 이미지 데이터, 일련화된 비트맵 객체 및 파일로 포함될 수 있습니다. 한 가지 포맷으로 데이터를 렌더링하는 것은 데이터가 읽힐 때까지 호출되지 않은 렌더링 기능으로 지연시킬 수 있습니다.

드래그 동작이 시작되면 클립보드 객체는 nativeDragEnter, nativeDragOvernativeDragDrop 이벤트의 이벤트 핸들러 내에서만 액세스할 수 있습니다. 드래그 동작이 종료되면 클립보드 객체를 읽거나 재사용할 수 없습니다.

응용 프로그램 객체는 참조 및 직렬화된 객체로 전송될 수 있습니다. 참조는 원본 응용 프로그램 내에서만 유효합니다. 직렬화된 객체 전송은 AIR 응용 프로그램 간에 유효하며, 직렬화 및 비직렬화될 때 유효한 객체에만 사용할 수 있습니다. 직렬화된 객체는 문자열 기반 데이터 전송 포맷인 AMF3(Action Message Format for ActionScript 3)로 변환됩니다.

Flex 프레임워크에 대한 작업

대개의 경우 Flex 응용 프로그램 구축 시 Adobe® Flex™ 끌어 놓기 API를 사용하는 것이 더 좋습니다. Flex 프레임워크는 Flex 응용 프로그램이 AIR에서 실행될 때 해당 기능 집합을 제공합니다(내부적으로 AIR NativeDragManager 사용). 또한 Flex는 응용 프로그램 또는 구성 요소가 보다 제한적인 브라우저 환경에서 실행될 때 더 제한적인 기능 집합을 제공합니다. AIR 클래스는 AIR 런타임 환경 외부에서 실행되는 구성 요소나 응용 프로그램에서는 사용할 수 없습니다.