たつろうです。
今日はインスタントメディアの開発を夕方までやって、その後はFlexとAIRについての勉強をよしろうとともにやっておりました。
以下やった事
まずは普通に
Flex Builder 3と
Adobe AIRのインストール。
次に
Adobe AIR完全解説を手本にPDFリーダーアプリケーションを作る。
以上。
なのですが、作るところで引っかかったのがいくつかありました。
まず、MacだとなぜかPDFを表示するところでAIRアプリケーションが止まる。落ちる。
よしろうのWindowsXPではちゃんと表示されていた。なぜ。。。
最初はAdobe Readerが入っていないから?などと考えてインストールしてみたものの、あまり改善せず。
同じような症状でお困りの方いたら是非情報交換したいです。。。
次に、ネイティブ環境とAIR間のドラッグアンドドロップ処理の書き方がどうもBeta1と3の間で変化しているらしいということ。
Adobe AIR完全解説のコードではエラーになってしまい、そもそもアプリケーションとして仕上がらない。
どういう事かといろいろ検索したりAPIを探ったりした結果、そもそも本に書いてあるTransferableFormatsがbeta3では存在していないっぽい。
そこで手詰まり感漂ってきたわけなのですが、あきらめずにAPIやWebサイトを漁って、どうにか実現出来るコードに行き着く事が出来ました。
そんな訳で忘れないうちにコードの抜粋を晒しておきます。
mx:WindowedApplicationタグでcreationComplete="init();"を呼ぶ事を前提としたコードです。
import flash.desktop.ClipboardFormats;
import flash.desktop.NativeDragActions;
import flash.desktop.NativeDragManager;
import flash.events.NativeDragEvent;
import flash.filesystem.File;
private function init():void {
this.addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER, onDragIn);
this.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP, onDrop);
}
public function onDragIn(event:NativeDragEvent):void {
NativeDragManager.acceptDragDrop(this);
}
public function onDrop(event:NativeDragEvent):void {
NativeDragManager.dropAction=NativeDragActions.COPY;
var dropfiles:Array=event.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array;
for each (var file:File in dropfiles) {
// ここに処理を書いていけばOK
}
}
どうもDragActionsとかのDrag*の名前がNativeDrag*に変更されているようで、この辺変更するだけでいいようです。
細かい内容の追跡は後ほどやろうと思います。
もう眠いです。おやすみなさい。