AIRに画像ファイルをドラッグ&ドロップして表示
AIRで作成したアプリケーションに画像ファイルをドラッグ&ドロップして表示するサンプルを作成しましたので掲載します。
AIRで作成したアプリケーション外からドラッグ&ドロップするには「NativeDragEvent」に定義してある「NATIVE_DRAG_ENTER」と「NATIVE_DRAG_DROP」のイベント処理を行います。
ポイントは
1.
NATIVE_DRAG_ENTERイベントにて「NativeDragManager.acceptDragDrop」を呼び出しドラッグ&ドロップを許可する
2.
NATIVE_DRAG_DROPイベントにてイベントクラスのプロパティ「Clipboard」からデータを取得して処理する
となっています。
詳細は下記のサンプルをご覧ください。
■実行結果

AIRで作成したアプリケーション外からドラッグ&ドロップするには「NativeDragEvent」に定義してある「NATIVE_DRAG_ENTER」と「NATIVE_DRAG_DROP」のイベント処理を行います。
ポイントは
1.
NATIVE_DRAG_ENTERイベントにて「NativeDragManager.acceptDragDrop」を呼び出しドラッグ&ドロップを許可する
2.
NATIVE_DRAG_DROPイベントにてイベントクラスのプロパティ「Clipboard」からデータを取得して処理する
となっています。
詳細は下記のサンプルをご覧ください。
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="applicationCompleteEventHandle()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.managers.DragManager;
var loader:Loader;
private function applicationCompleteEventHandle():void {
canvas.addEventListener(
NativeDragEvent.NATIVE_DRAG_ENTER, nativeDragEnterEventHandler);
canvas.addEventListener(
NativeDragEvent.NATIVE_DRAG_DROP, nativeDragDropEventHandler);
}
private function nativeDragEnterEventHandler(event:NativeDragEvent):void {
if (event.clipboard.hasFormat(
ClipboardFormats.FILE_LIST_FORMAT)) {
NativeDragManager.acceptDragDrop(canvas);
}
}
private function nativeDragDropEventHandler(event:NativeDragEvent):void {
var fileList:Array
= event.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array;
if (fileList.length > 1) {
return;
}
var file:File = fileList[0];
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);
var byteArray:ByteArray = new ByteArray();
fileStream.readBytes(byteArray, 0, fileStream.bytesAvailable);
loader = new Loader();
loader.contentLoaderInfo
.addEventListener(Event.COMPLETE, completeEventHandle);
loader.contentLoaderInfo
.addEventListener(IOErrorEvent.IO_ERROR, ioErrorEventHandler);
loader.loadBytes(byteArray);
}
private function completeEventHandle(event:Event):void {
if (loader.content is Bitmap) {
image.data = loader.content;
}
}
private function ioErrorEventHandler():void {
Alert.show("画像を読み込めませんでした。");
}
]]>
</mx:Script>
<mx:Canvas id="canvas" x="0" y="0" width="100%" height="100%" backgroundColor="#FFFFFF">
<mx:Image id="image" horizontalCenter="0" verticalCenter="0"/>
</mx:Canvas>
</mx:WindowedApplication>
■実行結果

ラベル: ActionScript, AIR
0 件のコメント:
コメントを投稿
<< ホーム