Adobe Flash CS3/CS4/CS5編 Bridgeで選択したファイルをFlashに配置する

Adobe Bridgeのウィンドウで選択した画像ファイルを自動的にFlashに配置するスクリプトです。Flashの場合、そのままドラッグドロップできないのと、まとめてステージに配置することができるので少しは役立つかもしれません。
なお、スクリプトはBridgeやFlashから実行するのではなくESTK上から実行してください。実行する際のターゲットアプリケーション名はBridgeになります。
以下のスクリプトはBridge CS3のウィンドウで選択された画像をファイルをFlash CS3のライブラリに読み込むものです。実行する前にあらかじめドキュメントを用意しておく必要があります。


var diskName = "SnowLeopard"; // ルートドライブ名
var fileList = app.document.selections;
for(var i=0; i<fileList.length; i++){
myBTalk("file:///"+diskName+fileList[i].path);
}

function myBTalk(filename){
var scriptcode = 'dom = fl.getDocumentDOM();';
scriptcode += 'dom.importFile("'+filename+'", true);';
//$.writeln(scriptcode);
var btObj = new BridgeTalk;
btObj.body = scriptcode;
btObj.target = "flash-9";
btObj.send();
}


ステージにも同時に配置したい場合は以下の行の最後にあるtrueをfalseにしてください。

scriptcode += 'dom.importFile("'+filename+'", true);';

特定の拡張子を持つファイルだけを貼り付けたい場合には以下のようにします。上から2行目の拡張子リストを変更、追加することで任意の拡張子を持つ画像ファイルを配置することができます。

var diskName = "SnowLeopard"; // ルートドライブ名
var ext = [".jpg", ".png", ".gif"]; // 拡張子
var fileList = app.document.selections;
for(var i=0; i<fileList.length; i++){
for(var j=0; j<ext.length; j++){
if (fileList[i].path.indexOf(ext[j]) > -1){
myBTalk("file:///"+diskName+fileList[i].path);
}
}
}

function myBTalk(filename){
var scriptcode = 'dom = fl.getDocumentDOM();';
scriptcode += 'dom.importFile("'+filename+'", true);';
//$.writeln(scriptcode);
var btObj = new BridgeTalk;
btObj.body = scriptcode;
btObj.target = "flash-9";
btObj.send();
}


Flash CS3でなくCS4で実行する場合は以下のようにしてください。

btObj.target = "flash-10";

Flash CS5の場合は以下のように変更してください。

btObj.target = "flash-11";

FlashもFireworks同様、マクロメディア社で開発されていたため同じJavaScriptでも他のAdobe製品などとは、かなり異なります。Fireworks同様にユーザーの環境に依存する場合があります。前回同様、上記のスクリプトは、そのままでは動作しません。Windowsの場合はCドライブから起動するというのがベースにあるのでよいのですが、MacOS Xの場合は起動ディスクの名称は適当に変更することができます。一般的にはMacOS Xはディスク名を必要としないのですが、FlashもFireworksと同じように起動ディスク名を指定しないと動作しません。つまり

var diskName = "SnowLeopard"; // ルートドライブ名

のSnowLeopardの部分は、各自自分が起動しているハードディスクの名前に置き換えてもらわなければいけません。実際にファイルを選択した時にどのようなパス指定になるかは以下のスクリプトを使って確認できます。なお、ファイルの拡張子は.jsや.jsxではなく.jsflにしてください(Fireworksは.jsfでFlashは.jsflと拡張子が違うので注意)。

var URI = fl.browseForFileURL("select", "Import File");
alert(URI);

[サンプルをダウンロード]