三田倶楽部の日々

六本木の片隅で猫と踊った5人+αの記録
<< Flash Lite3.0 | main | 武器と防具はきちんと装備して >>
posted by たつろう
Flex3にはまる(2重の意味で)
たつろうです。

今日はインスタントメディアの開発を夕方までやって、その後はFlexとAIRについての勉強をよしろうとともにやっておりました。


以下やった事

まずは普通にFlex Builder 3Adobe 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*に変更されているようで、この辺変更するだけでいいようです。
細かい内容の追跡は後ほどやろうと思います。

もう眠いです。おやすみなさい。
| たつろう | 技術トピック | 04:09 | comments(0) | trackbacks(0) | -









http://mitaclub.jp/trackback/89
     12
3456789
10111213141516
17181920212223
24252627282930
<< September 2017 >>

このページの先頭へ