他の人が作った.flaファイルを見たりしなきゃいけない場合、一番げんなりするのがMCのフレームにごそごそASが書いてあるやつ。処理の流れを追う気が無くなっちゃいます。
それに加えてライブラリが整理されてないで、ただ入ってる状態の.flaファイルなんてものは、そのままゴミ箱にいれたくなりますよね。
普段.flaファイルを触る機会が少ない場合はなおさらです。
でもゴミ箱行きもかわいそうですし、どのMCにASが書いてあるかチェックできたら少しは楽になるかなっと思って、ざっとJSFL書いてみました。
追記:
GetFrameActionScript – Spark project
http://www.libspark.org/wiki/e_s_jp/GetFrameActionScript
[Flash]フレームに書いてあるASを出力するコマンド | blog ViolentCoding
http://violentcoding.com/blog/2008/08/23/archives/279
Tanablog: “ライブラリの中でASが書いてあるやつを調べる” を改良した
http://bitmap.dyndns.org/blog/archives/001602.html
ASが書いてあるキーフレームの取得方法の変更。
テスト用の.flaファイルでしか確認してないですけど、ライブラリアイテムを全チェックして、ASが書いてある「アイテム名」と「レイヤー名」、「フレーム番号」を以下のように出力パネルに書き出します。
##### Library Item:[ シンボル 5 ], Layer:[ レイヤー 2 ], Frame:[ 1 ] #####
this.stop();
###################################
##### Library Item:[ シンボル 3 ], Layer:[ レイヤー 2 ], Frame:[ 1 ] #####
// アクションスクリプト
trace("init");
###################################
##### Library Item:[ シンボル 3 ], Layer:[ レイヤー 2 ], Frame:[ 10 ] #####
gotoAndPlay(1);
たぶん、たくさんASが書いてある場合はどかどか出力パネルにASがでちゃうので、JSFLの中のisCodeOutput を false にするとASのコード内容は出ないようになります。
libItemASCheck.jsfl version 0.2.0
/* JSFL
libItemASCheck.jsfl
Version 0.2.0
author Eiji Saito
since 2008-08-04
*/
fl.outputPanel.clear();
fl.trace("********** Library Item ActionScript Check **********");
fl.trace("");
var doc = fl.getDocumentDOM();
var isCodeOutput = true;
libItemASCheck(isCodeOutput);
function libItemASCheck( isShowAS ) {
if (doc == null) {
return;
}
var itemArray = doc.library.items;
var itemLength = itemArray.length;
for (var i=0; i < itemLength; i++) {
var libItem = itemArray[i];
var type = libItem.itemType;
if (type == "movie clip" || type == "graphic" || type == "button") {
var libTimeline = libItem.timeline;
var layersArray = libTimeline.layers;
var layersLength = layersArray.length;
for (var j=0; j < layersLength; j++) {
var targetLayer = layersArray[j];
var framesArray = targetLayer.frames;
var frameLength = framesArray.length;
for (var k=0; k < frameLength; k++) {
var targetFrame = framesArray[k];
var asString = targetFrame.actionScript;
if (asString) {
if (k == targetFrame.startFrame) {
var libName = libItem.name;
var layerName = targetLayer.name;
var frameNum = k + 1;
fl.trace("########## "
+ "Library Item:[ "+ libName + " ], "
+ "Layer:[ " + layerName + " ], "
+ "Frame:[ " + frameNum + " ] "
+ "##########" );
if (isShowAS) {
fl.trace("");
fl.trace(asString);
fl.trace("");
}
fl.trace("###################################");
fl.trace("");
fl.trace("");
fl.trace("");
}
}
}
}
}
}
}
整理したり、なんらかの拡張機能に持っていく予定ですが、当分先になりそうなので、とりあえず使いたいという人は以下からどうぞ。コマンドとして使ってください。
JSFLダウンロード







