패키지 | flash.desktop |
클래스 | public class NativeDragManager |
상속 | NativeDragManager Object |
런타임 버전: | AIR 1.0 |
다음 종류의 데이터를 전송할 수 있습니다.
- 비트맵
- 파일
- 텍스트
- URL 문자열
- 직렬화된 객체
- 객체 참조(원본 응용 프로그램 내에서만 유효)
참고: 모든 NativeDragManager 멤버는 static입니다. 이 클래스의 인스턴스를 만들 필요가 없습니다.
드래그 앤 드롭 작업은 사용자가 표시된 항목을 클릭하여 다른 곳으로 드래그할 때 시작되는 사용자 인터페이스 동작입니다. 드래그 동작 동안에는 AIR 응용 프로그램 윈도우에서 드래그될 때 표시 목록의 대화형 객체가 기본 드래그 이벤트를 전달합니다. 이러한 이벤트의 핸들러는 NativeDragManager 클래스의 메서드를 호출하여 드래그된 항목이 객체에 드롭될 수 있는지 여부를 나타낼 수 있습니다. 이에 대해 NativeDragManager는 마우스 포인터를 변경하여 사용자에게 피드백을 제공합니다.
AIR 프로파일 지원: 이 기능은 AIR for TV 장치에서 지원되지 않습니다. 또한 일부 휴대 장치에서 지원되지 않습니다. NativeDragManager.isSupported
속성을 사용하여 런타임에 지원을 테스트할 수 있습니다. 여러 프로파일 간 API 지원에 대한 자세한 내용은 AIR 프로파일 지원을 참조하십시오.
드래그 액션
일반적으로 드래그 앤 드롭 동작은 액션이라고 불리는 세 가지 유형의 작업에 사용됩니다. 응용 프로그램 컨텍스트에 따라 해당 액션의 의미가 달라지기 때문에 런타임에서는 액션과 관련된 특정 비헤이비어를 강제 적용하지 않습니다. 하지만 액션을 적절하게 구현하면 응용 프로그램의 사용자 환경이 향상됩니다.
가능한 액션은 다음과 같습니다.
- 복사 - 원본은 그대로 두고 데이터 복사본이 만들어집니다. 응용 프로그램 내에서 객체를 드래그할 때 해당 객체의 참조가 아니라 원래의 객체 자체를 복사해야 합니다.
- 이동 - 항목을 한 목록에서 다른 목록으로 이동할 때처럼 데이터가 원래의 컨텍스트에서 드롭 대상이 정의하는 컨텍스트로 이동합니다.
- 링크 - 원래 컨텍스트에서는 항목을 그대로 둔 채, 원본 데이터에 대한 참조나 바로 가기가 만들어집니다.
드래그 작업을 시작하는 NativeDragManager.doDrag()
호출에서 allowedActions
매개 변수를 제공하여 드래그 동작에 대해 허용되는 액션을 설정할 수 있습니다. allowedActions
매개 변수가 제공되지 않으면 모든 액션이 허용됩니다. 잠재적인 드래그 대상은 NativeDragEvent 객체의 allowedActions
속성을 사용하여 허용되는 액션을 확인할 수 있으며 호환되지 않는 액션만 허용하는 드롭을 받아들여서는 안 됩니다. 하지만 이것이 런타임에 의해 강제 적용되지는 않습니다.
드롭 대상만 단일 액션을 구현하는 경우 객체는 nativeDragEnter
이벤트와 nativeDragOver
이벤트 모두에 대한 핸들러에서 NativeDragManager의 dropAction
속성을 설정할 수 있습니다. 드롭 이전에 속성을 설정하여 드래그 관리자가 지원되는 액션을 나타내도록 마우스 포인터를 업데이트하도록 허용할 뿐만 아니라 사용자가 수정자 키를 사용하여 호환되지 않는 액션을 선택하지 않도록 합니다. 지정된 액션이 허용된 액션 중 하나가 아닌 경우 대상에서 acceptDrop()
메서드를 호출해도 드롭이 허용되지 않습니다.
드롭을 받아들일 때 잠재적인 드롭 대상은 nativeDragDrop
이벤트에 대한 응답으로 NativeDragManager.dropAction
속성을 설정함으로써 선택된 액션을 지정해야 합니다. 이 액션은 nativeDragComplete
이벤트에서 시작 표시 객체에 다시 보고됩니다. 드롭 대상에 의해 설정된 액션이 없는 경우에는 기본 액션이 복사, 이동, 링크의 우선 순위 순서로 허용되는 액션에서 선택됩니다. 시작 객체는 선택된 액션에 대한 응답으로 내부 상태를 업데이트합니다.
액션 이름의 문자열 상수는 NativeDragActions 클래스에서 정의됩니다.
이벤트 시퀀스
드래그 동작은 mouseDown
또는 mouseMove
이벤트 핸들러 내에서 NativeDragManager.doDrag()
메서드를 호출함으로써 시작되며 사용자 액션에 대한 응답으로 다음 이벤트 시퀀스를 통해 진행됩니다.
-
nativeDragStart
이벤트 -NativeDragManager.doDrag()
가 호출되면 메서드에 매개 변수로 전달된 대화형 객체가 시작자 객체가 되고nativeDragStart
이벤트를 전달합니다. -
nativeDragUpdate
이벤트 - 드래그가 진행 중인 동안 시작자 객체는nativeDragUpdate
이벤트를 계속 전달합니다. -
nativeDragEnter
,nativeDragOver
이벤트 - 드래그 동작이 대화형 객체 위로 이동하면 해당 객체가nativeDragEnter
이벤트를 전달합니다. 드래그 동작이 대화형 객체 위에 있는 동안 해당 객체는nativeDragOver
이벤트를 계속 전달합니다. 이 두 이벤트에 대한 응답으로 잠재적인 드롭 대상 역할을 하는 객체가 이벤트 객체의 속성을 확인하여 드롭을 받아들일 수 있는지 여부를 결정해야 합니다. 데이터 형식과 허용되는 액션이 적절한 경우에는 해당 이벤트의 이벤트 핸들러가NativeDragManager.acceptDrop()
을 호출하고, 드래그 대상 역할을 할 표시 객체(일반적으로nativeDragEnter
또는nativeDragOver
이벤트를 전달한 객체)에 참조를 전달해야 합니다. 그러면 사용자가 드래그된 항목을 대상으로 드롭할 수 있습니다. -
nativeDragExit
이벤트 - 드래그 동작이 대화형 객체를 지나가면 해당 객체가nativeDragExit
이벤트를 전달합니다. 이전NativeDragManager.acceptDrop()
메서드 호출에서 해당 객체가 드래그 대상으로 지정된 경우에는 이 호출이 더 이상 유효하지 않으며 동작이 대화형 객체 안으로 다시 들어갈 경우acceptDrop()
을 다시 호출해야 합니다. -
nativeDragDrop
이벤트 - 사용자가 객체 위에서 마우스 버튼을 놓을 때 대상 표시 객체가nativeDragDrop
이벤트를 전달합니다. 이 이벤트의 핸들러는 이벤트 객체의transferable
속성에 있는 데이터에 액세스할 수 있으며, 시작자 객체가 어떤 액션을 수행해야 하는지를 알려 주는NativeDragManager.dropAction
속성을 설정해야 합니다. -
nativeDragComplete
- 사용자가 마우스 버튼을 놓으면서 드래그 동작을 끝낼 때 시작자 객체는nativeDragComplete
이벤트를 전달합니다(드롭 자체가 완료되었는지 여부는 관계없음). 이 이벤트의 핸들러는 이벤트 객체의dropAction
속성을 확인하여 필요한 경우 내부 데이터 상태에 대해 어떤 수정이 필요한지를(예: 드래그 아웃된 항목을 목록에서 제거) 결정할 수 있습니다.dropAction
이NativeDragActions.NONE
인 경우에는 드래그한 항목이 드롭 가능한 대상에 드롭되지 않은 것입니다.
응용 프로그램 간 동작
AIR 응용 프로그램이 아닌 응용 프로그램에서 시작된 드래그 동작이 AIR 응용 프로그램 윈도우로 들어오는 경우에는 nativeDragStart
또는 nativeDragComplete
이벤트를 전달할 시작자 객체가 없습니다. 이 동작 도중에 전달된 이벤트는 같은 AIR 응용 프로그램 내에서 시작되고 끝나는 동작과 동일한 패턴을 따릅니다.
드래그 동작이 AIR 응용 프로그램 윈도우 밖으로 나가는 경우에는 nativeDragEnter
, nativeDragOver
또는 nativeDragDrop
이벤트를 전달할 대상 객체가 없습니다. 그래도 시작자 객체는 nativeDragComplete
이벤트를 전달하고, 이 이벤트는 기본 운영 체제에 의해 설정된 드래그 액션(또는 드롭이 허용되지 않는 경우에는 none
)을 보고합니다.
드래그 동작이 한 AIR 응용 프로그램에서 다른 AIR 응용 프로그램으로 이동하는 경우에는 시작자 및 대상 표시 객체가 평소와 같이 각각의 응용 프로그램 내에서 이벤트를 전달합니다.
정보 전송
드래그 앤 드롭 동작 동안 전송되는 데이터는 Clipboard 객체에 들어 있습니다. 이 데이터 객체는 드래그 동작을 시작하는 NativeDragManager.doDrag()
메서드와 함께 드래그 작업에 추가됩니다. 잠재적인 드롭 대상은 기본 드래그 이벤트 객체의 clipboard
속성을 통해 Clipboard 객체에 액세스할 수 있습니다. 드래그 작업이 시작된 이후에는 NativeDragEvent의 이벤트 핸들러에서만 Clipboard 객체에 액세스할 수 있습니다. 객체에 대해 다른 액세스가 시도되면 런타임 오류가 발생합니다.
보안 고려 사항
시작자 및 잠재적 대상 객체의 보안 샌드박스에 따라 드래그 중인 데이터에 액세스할 수 있는 방법이 결정됩니다. 두 객체 모두 같은 샌드박스에 있으면 어느 NativeDragEvent 객체에서나 데이터에 액세스할 수 있습니다. 그러나 시작자 및 대상 객체가 서로 다른 샌드박스에 있는 경우에는 nativeDragDrop
이벤트의 이벤트 핸들러 안에 있는 대상 샌드박스에서만 데이터에 액세스할 수 있습니다. 다른 기본 드래그 이벤트 핸들러도 이벤트 clipboard
속성에서 참조된 Clipboard 객체에 액세스하여 사용 가능한 데이터 형식을 확인할 수 있지만 clipboard.getData()
메서드를 호출하면 보안 오류가 발생합니다.
관련 API 요소
flash.desktop.NativeDragActions
flash.desktop.NativeDragOptions
flash.desktop.Clipboard
속성 | 정의 주체 | ||
---|---|---|---|
constructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다. | Object | ||
dragInitiator : InteractiveObject [정적] [읽기 전용]
드래그 작업을 시작한 NativeDragManager.doDrag() 호출에 전달된 대화형 객체입니다. | NativeDragManager | ||
dropAction : String [정적]
드롭 대상에 의해 지정된 드래그 액션입니다. | NativeDragManager | ||
isDragging : Boolean [정적] [읽기 전용]
드래그 작업이 현재 진행 중인지 여부를 보고합니다. | NativeDragManager | ||
isSupported : Boolean [정적] [읽기 전용]
현재 플랫폼에서 NativeDragManager 클래스가 지원되면 isSupported 속성이 true로 설정되고, 그렇지 않으면 false로 설정됩니다. | NativeDragManager |
메서드 | 정의 주체 | ||
---|---|---|---|
[정적]
지정된 대상 대화형 객체가 현재 드래그 이벤트에 해당하는 드롭을 받아들일 수 있다는 것을 NativeDragManager 객체에 알립니다. | NativeDragManager | ||
doDrag(dragInitiator:InteractiveObject, clipboard:Clipboard, dragImage:BitmapData = null, offset:Point = null, allowedActions:NativeDragOptions = null):void [정적]
드래그 앤 드롭 작업을 시작합니다. | NativeDragManager | ||
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다. | Object | ||
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다. | Object | ||
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다. | Object | ||
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다. | Object | ||
로캘별 규칙에 따라 서식이 지정된 이 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 프리미티브 값을 반환합니다. | Object |
dragInitiator | 속성 |
dragInitiator:InteractiveObject
[읽기 전용] 런타임 버전: | AIR 1.0 |
드래그 작업을 시작한 NativeDragManager.doDrag()
호출에 전달된 대화형 객체입니다.
구현
public static function get dragInitiator():InteractiveObject
dropAction | 속성 |
dropAction:String
런타임 버전: | AIR 1.0 |
드롭 대상에 의해 지정된 드래그 액션입니다.
dropAction
속성은 nativeDragDrop
이벤트의 핸들러에서 설정되어야 합니다. dropAction
이 nativeDragComplete
이전에 설정되지 않은 경우 NativeDragManager는 목록의 복사, 이동 또는 링크 중(해당 순서 유지) 허용된 첫 번째 액션을 사용하여 값을 설정합니다.
구현
public static function get dropAction():String
public static function set dropAction(value:String):void
관련 API 요소
isDragging | 속성 |
isSupported | 속성 |
acceptDragDrop | () | 메서드 |
public static function acceptDragDrop(target:InteractiveObject):void
런타임 버전: | AIR 1.0 |
지정된 대상 대화형 객체가 현재 드래그 이벤트에 해당하는 드롭을 받아들일 수 있다는 것을 NativeDragManager 객체에 알립니다.
이 메서드는 드래그된 항목에 있는 데이터 형식을 하나 이상 그리고 허용되는 액션을 하나 이상 처리할 수 있는 nativeDragDrop
핸들러가 지정된 대상 객체에 있는 경우에만 호출해야 합니다.
이 함수는 nativeDragEnter
또는 nativeDragOver
이벤트 핸들러 내에서만 호출할 수 있습니다.
매개 변수
target:InteractiveObject |
doDrag | () | 메서드 |
public static function doDrag(dragInitiator:InteractiveObject, clipboard:Clipboard, dragImage:BitmapData = null, offset:Point = null, allowedActions:NativeDragOptions = null):void
런타임 버전: | AIR 1.0 |
드래그 앤 드롭 작업을 시작합니다.
드래그 작업을 시작하려면
- 새 Clipboard 객체를 만듭니다.
- 하나 이상의 형식으로 전송될 데이터를 추가합니다.
- 드래그 동안 프록시 이미지로 사용될 BitmapData 객체를 만들 수도 있습니다.
- 이 작업에서 허용되는 액션을 제한하는 NativeDragOptions 객체를 만들 수도 있습니다.
allowedActions
매개 변수를null
로 남겨 두면 모든 액션이 허용됩니다. NativeDragManager.doDrag()
를 호출합니다.
시작자 객체는 이 메서드를 호출한 후에 nativeDragStart
이벤트를, 드래그가 진행 중인 동안에는 nativeDragStart
이벤트를, 사용자가 마우스 버튼을 놓아서 드래그 동작을 끝낼 때에는 nativeDragComplete
이벤트를 전달합니다. nativeDragComplete
이벤트의 핸들러는 이벤트의 dropAction
속성을 확인하여 드래그 앤 드롭 작업이 완료되었는지를 결정할 수 있습니다. dropAction
이 NativeDragActions.NONE
인 경우에는 드래그한 항목이 드롭 가능한 대상에 드롭되지 않은 것입니다.
이 메서드는 mouseDown
또는 mouseMove
이벤트 핸들러 내에서만 호출할 수 있습니다. mouseMove
이벤트에 대한 응답으로 호출된 경우에는 마우스 버튼도 눌러진 상태여야 합니다.
매개 변수
dragInitiator:InteractiveObject — 일반적으로 드래그 동작이 시작되는 객체입니다. nativeDragStart 및 nativeDragComplete 이벤트를 수신합니다.
| |
clipboard:Clipboard — 드래그되고 있는 데이터에 대한 컨테이너 객체입니다.
| |
dragImage:BitmapData (default = null ) — 드래그 동작 동안 마우스 포인터 아래에 표시되는 선택적 프록시 이미지입니다. null 인 경우에는 이미지가 표시되지 않습니다.
| |
offset:Point (default = null ) — 마우스 핫스팟과 드래그 이미지 왼쪽 위 모서리 사이의 오프셋입니다. 음수 좌표는 핫스팟을 기준으로 이미지를 위쪽과 왼쪽으로 이동합니다. null 인 경우에는 드래그 이미지의 왼쪽 위 모서리가 마우스 핫스팟 위치에 배치됩니다.
| |
allowedActions:NativeDragOptions (default = null ) — 이 작업에 허용되는 드래그 앤 드롭 액션을 제한합니다. null 인 경우에는 모든 액션이 허용됩니다.
|
관련 API 요소
Tue Jun 12 2018, 03:17 PM Z