‘jsfl’ カテゴリーのリスト

Flashライブラリ内の選択した複数アイテムをフレーム毎に並べるJSFL

2011 年 7 月 26 日 火曜日

最近はタイムライン上であれこれする作業が多いのでいろいろ公開されているJSFLを使う機会が増えました。
んで、ちょっとJSFLについてググッてみたら作れそうだったのでチャレンジ。

ちなみにJSFLとはFlash上で動作するJavaScriptを使用したマクロのような拡張機能です。Flashを使っているならすでに知っている方や使っている方も多いと思います。

今回はFlashライブラリ内の選択したシンボル(画像)をフレーム毎に順に並べていくjsflを作成しました。

設定方法

下記のスクリプトを.jsflの拡張子で保存。保存ディレクトリはFlashのCommandsフォルダ。(OSによって異なるので詳しくは下記参照)

Win
/C/Documents and Settings/アカウント名/Local Settings/Application
Data/Adobe/Flash CS3/ja/Configuration/Commands

Mac
/Users/アカウント名/Library/Application Support/Adobe/Flash CS5.5/ja_JP/Configuration/Commands

//
// ライブラリで選択されている複数アイテムを
// 左上基準で一定フレームごとに配置します
//
// @author 	Tatsuya Kimura
// @date	2011.07.24
//

var el; // ステージ配置後のアイテム(エレメント)

var tl = fl.getDocumentDOM().getTimeline(); //タイムラインを取得
var selected = fl.getDocumentDOM().library.getSelectedItems(); // 選択中のライブラリアイテム配列
var interval = 1; // 配置するフレーム間隔

// エレメントの配置
for(i = 0;i < selected.length;i++){

	// 2回目以降、次のフレームに空白キーフレームを挿入
	if(i){ tl.convertToBlankKeyframes(tl.currentFrame + interval); };

	// 選択中のアイテムを配置
	// ここでは中央基準でアイテムが配置される
	fl.getDocumentDOM().library.addItemToDocument({x:0, y:0}, selected[i].name);

	// 中央基準で配置されたアイテムを左上基準に再配置
	// (アイテムの中央基準で配置したい場合は下記の3行をコメントアウト)
	el = tl.layers[tl.currentLayer].frames[tl.currentFrame].elements[0];
	el.x = 0;
	el.y = 0;

	// 選択中の最後のアイテムになったら
	// 設定した間隔分のフレームを挿入
	if(i == selected.length - 1){
		tl.insertFrames(interval - 1,false,tl.currentFrame + 1);
	};

}

// 処理後に一応全フレームを選択中にしておく
tl.selectAllFrames();

使用方法

保存後にツールパネルのコマンドを開くと保存したjsflのファイル名が表示されます。
コマンドパネル

ライブラリで配置したいシンボル(画像)を全て選択、配置したいフレームの先頭にカーソルを合わせて上記で表示されたコマンドを実行してください。
シンボルを選択

下記のように配置されます。
実行結果

また、下記のスクリプト部分で配置間隔を変更することもできます。


var interval = 4; // 4フレーム毎に配置

実行結果
実行結果

自分の実行環境でCS4の場合、選択したシンボルの末尾が先頭にきてしまうようです。
(多分配列を取得した時点でそうなってるのでバグっぽい)
なのでもしその不具合が出たら手作業でちょちょいっと並び替えてください。

時間がある時に配置の基準点やフレーム間隔をメニューから設定できるようにする予定です。
検証がまだまだ不十分なので不具合とか気づいた点コメントいただけると嬉しいです。

参考サイト

下記サイトを参考にさせていただきました、ありがとうございます!

【Flash 拡張】JSFL MXP まとめ - YAIMO BLOG
http://blog.yaimo.net/jsflmxp/

JSFL入門メモ - プログラマー、再起動中
http://d.hatena.ne.jp/naoto5959/20090402/1238663507