他の人が作った.flaファイルを見たりしなきゃいけない場合、一番げんなりするのがMCのフレームにごそごそASが書いてあるやつ。処理の流れを追う気が無くなっちゃいます。

それに加えてライブラリが整理されてないで、ただ入ってる状態の.flaファイルなんてものは、そのままゴミ箱にいれたくなりますよね。

普段.flaファイルを触る機会が少ない場合はなおさらです。

 

でもゴミ箱行きもかわいそうですし、どのMCにASが書いてあるかチェックできたら少しは楽になるかなっと思って、ざっとJSFL書いてみました。

 

追記:

  • 2008/08/23 さらに改良してSpark projectにコミット
  • 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

  • 2008/08/07 Tanabeeさん改良版
  • Tanablog: “ライブラリの中でASが書いてあるやつを調べる” を改良した
    http://bitmap.dyndns.org/blog/archives/001602.html

  • 2008/08/05 Version 0.2.0へ更新
  • 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ダウンロード

    libItemASCheckJSFL_0_2_0.zip

     

    Related posts