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

August 07, 2008category: Flash JSFL 

ライブラリの中でASが書いてあるやつを調べる」を勝手に改良して、ルートのタイムライン (現在開いているタイムライン) の ActionScript も出力するようにした。
また、出力された ActionScript に余計な空行が入っていた (Windows の Flash 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("");
        }
      }
    }
  }
}

comments (2)

comments

改良ありがとうございます!

Posted by: e_s_jp : August 21, 2008 12:23 AM

原作者の方に見つかってしまいましたか。
JSFL、かなり実務に役立っています。
ありがとうございました!

Posted by: Tanabe : August 21, 2008 01:49 AM