"ライブラリの中でASが書いてあるやつを調べる" を改良した

ライブラリの中でASが書いてあるやつを調べる」を勝手に改良して、ルートのタイムライン (現在開いているタイムライン) の ActionScript も出力するようにした。
また、出力された ActionScript に余計な空行が入っていた (WindowsFlash CS3) のを削除した。

fl.outputPanel.clear();
fl.trace("********** Library Item ActionScript Check **********");
fl.trace("");
var doc = fl.getDocumentDOM();
var isCodeOutput = true;
checkLibraryItemActionScript();
function checkLibraryItemActionScript() {
if (doc == null) {
return;
}
//traverse current timeline
traverse(doc.getTimeline().layers, "current timeline");
//traverse library items
var items = doc.library.items;
for (var i = 0, length = items.length; i < length; i++) {
var item = items[i];
var type = item.itemType;
if ((type == "movie clip") || (type == "graphic") || (type == "button")) {
var layers = item.timeline.layers;
traverse(layers, item.name);
}
}
}
function traverse(layers, itemName) {
var layerLength = layers.length;
for (var i = 0; i < layerLength; i++) {
var layer = layers[i];
var frames = layer.frames;
var frameLength = frames.length;
for (var j = 0; j < frameLength; j++) {
var frame = frames[j];
var actionScript = frame.actionScript;
if (actionScript) {
if (j == frame.startFrame) {
var frameNumber = j + 1;
fl.trace("########## "
+ "Library Item:[ " + (itemName || "") + " ], "
+ "Layer:[ " + layer.name + " ], "
+ "Frame:[ " + frameNumber + " ] "
+ "##########");
if (isCodeOutput) {
fl.trace("");
fl.trace(actionScript.replace(/\n/g, ""));
fl.trace("");
}
fl.trace("########################################");
fl.trace("");
fl.trace("");
fl.trace("");
}
}
}
}
}