[Fireworks] 指定したフォルダにあるファイルを全て書き出すjsf

2009/10/16

こんにちは。きんくまです。

flixelの記事を書こうと思ったのですが、思ったように触れてなくてネタがないので、
久々にFireworksネタです。

せっかくなので、拙作jsfEditの使い方もかねて解説しようと思います。
jsfEditは姉妹版jsflEditと同じ機能なので、Flashのjsflでも同じように動作します。
>>jsflEdit, jsfEdit « 複数の「JSFL/JSF」の「実行/編集」ができる「Flash/Fireworks」の拡張パネル

まずはMXPをインストールします。
ヘルプ→拡張機能の管理

Adobe Extention Managerが立ち上がるので、
ファイル→拡張機能のインストール
で、おとしてきたjsfEditをインストール

Fireworksを落としてから、立ち上げなおします。
ウインドウ→KinkumaUtility
を選択すると以下のウインドウが立ち上がります。
下は私が自分で入力したjsfのコマンドが入っているので、初めていれた方は
リストには何も入っていないと思います。
下図の「ココ」とかかれている+ボタンを押すことで、jsfの追加ができます。

jsf_fig1

new programのリストが追加されます。名前を変更します。
リストを選択してダブルクリックして、好きな名前を入力します。
ここでは「指定したフォルダで書きだし」としました。

jsf_fig2

名前を変更したら、それを選択したまま「←→」ボタンをクリック。

jsf_fig3

すると下の画面になります。入力欄にプログラムを入力していきます。

jsf_fig4

今回のプログラムは以下になります。コピペしましょう。

var choosefile = fw.locateDocDialog(0, ["PNG"])[0];
var dir = Files.getDirectory(choosefile);
var files;
var i;
if(Files.exists(dir)){
  files = Files.enumFiles(dir);
  for(i = 0; i < files.length; i++){
    var targetpath = files[i];
    if(Files.getExtension(targetpath) != '.png'){
      continue;
    }
    fw.openDocument(targetpath);
    var exportname = Files.getFilename(targetpath);
    exportname = exportname.replace(/.png/, '.jpg');
    var exportpath = Files.makePathFromDirAndFile(dir, exportname);
    fw.exportDocumentAs(null, exportpath, null);
    fw.closeDocument(fw.documents[0], false);
  }
}

jsf_fig5

これで、プログラムの入力が終わりました。もし、スクロールバーが表示されていない場合、
少し幅を伸ばしていただけると見えるようになります。ここ直さないといけないところですね。
すみません。

さて、プログラムを実行してみましょう。△印を押します。

jsf_fig6

以下は、今回のjsfで作ったプログラムの動作で、jsfEditとは関係なくなります。

ダイアログが立ち上がります。

jsf_fig7

書き出したいフォルダに入っているpngファイルをどれでもいいので指定します。
するとあとは自動でフォルダ内のpngファイルを同じフォルダ内に全て書き出します。

まとめ

jsfやjsflの制作は、テキストエディタ→アプリ切り替え→実行
の手順が結構面倒で、デバッグに時間がかかります。
jsfEditなら、FireworksならFireworks、FlashならFlash内でデバッグが完結するので、
よく制作している人なら、楽になるんじゃないかなと思います。


自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る