Posts filed in Flash


[Flash]ライブラリの中でクラスが設定されているやつを調べる

他の人が作った.flaファイルを見たりしなきゃいけない場合・・・の第2弾。

 

ASファイルを見てる場合、Flashのライブラリでクラス設定されたものって気づきづらかったりします。

var init_mc : MovieClip = new InitView();
var myMap : BitmapData = new EffectMap(0, 0);

上記みたいなコードがあった場合、InitView.as、EffectMap.asでクラス定義されてると思ってASファイルを探してみても、Flashのライブラリでクラス設定されていたら、そんなファイルは見つかりません。

 

で、ライブラリの中でクラスが設定されているやつを調べるJSFL。

GetLibraryItemClass

クラス設定されてるライブラリのみを対象に、クラスとか基本クラス(AS3)、識別子(AS2)などの一覧を出力パネルに書き出すコマンドです。

 

GetLibraryItemClass - Spark project
http://www.libspark.org/wiki/e_s_jp/GetLibraryItemClass


 

出力パネル例(ActionScript 3.0の場合)

Get Library Item Class Command
mySample.fla
Oct. 11, 2008 23:57:12

ActionScript 3.0
Document Class:	MainClass
**************************************************

Library Item:	initMC
Class:		InitView
BaseClass:		flash.display.MovieClip
Item Type:		movie clip
--------------------------------------------------

Library Item:	nextBtn
Class:		NextButton
BaseClass:		flash.display.SimpleButton
Item Type:		button
--------------------------------------------------

Library Item:	baseMC
Class:		BaseVIew
BaseClass:		flash.display.MovieClip
Item Type:		movie clip
--------------------------------------------------

Library Item:	parts/ColorPicker
Class:		fl.controls.ColorPicker
BaseClass:		flash.display.Sprite
Item Type:		component
--------------------------------------------------

Library Item:	parts/CheckBox
Class:		fl.controls.CheckBox
BaseClass:		flash.display.MovieClip
Item Type:		component
--------------------------------------------------

Library Item:	parts/hit.mp3
Class:		SESound
BaseClass:		flash.media.Sound
Item Type:		sound
--------------------------------------------------

Library Item:	parts/map.png
Class:		EffectMap
BaseClass:		flash.display.BitmapData
Item Type:		bitmap
--------------------------------------------------

 

出力パネル例(ActionScript 2.0の場合)

Get Library Item Class Command
mySample.fla
Oct. 11, 2008 23:57:12

ActionScript 2.0
**************************************************

Library Item:	initMC
Identifier:		initMC
Class:		InitView
Item Type:		movie clip
--------------------------------------------------

Library Item:	nextBtn
Identifier:		nextBtn
Class:
Item Type:		button
--------------------------------------------------

といった、具合を出力パネルに書き出す。

 

Save the result in a file

「Save the result in a file」は出力パネルの内容をファイルに保存するかどうか。
チェックした場合は、ファイル選択ダイアログが開きます。


 

GetLibraryItemClassコマンド ダウンロード

GetLibraryItemClass.mxp
http://www.libspark.org/svn/mxp/GetLibraryItemClass/trunk/mxp/GetLibraryItemClass.mxp

Flash CS3 以降用です。
※インストールにはExtension Managerが必要。

 

利用方法

「コマンド」メニュー > GetLibraryItemClass

 

ソースリポジトリ

GetLibraryItemClass ソース
http://www.libspark.org/svn/mxp/GetLibraryItemClass/trunk/src/

 

Related posts

[Flash]フレームに書いてあるASを出力するコマンド

ライブラリの中でASが書いてあるやつを調べるJSFLをTanablogさんで改良してくれたので、さらに勝手に改良して、「フレームに書いてあるASを調べる」コマンドに整理した。

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

 

Tanablogさんが改良した、現在編集中のタイムラインにあるASも出力する機能に、メインタイムライン(シーン)のASを区別して書き出す機能をミックスし、オブション設定なども追加。

GetFrameActionScript


All items Mode

メインタイムライン(シーン 1、シーン 2、・・・)と、ライブラリアイテムの全てをチェックして出力。

Get Frame ActionScript Command
Main.fla
Aug. 23, 2008 0:30:57

##################################################
	 Main.fla : シーン 1
	 Layer:[ レイヤー 2 ], Frame:[ 5 ]
##################################################

trace("loaded");

##################################################
	 Main.fla : シーン 2
	 Layer:[ レイヤー 1 ], Frame:[ 23 ]
##################################################

// シーン 2終了
this.stop();

##################################################
	 parts/シンボル 7
	 Layer:[ レイヤー 2 ], Frame:[ 1 ]
##################################################

stop();

function hoge() :void {
    trace("hoge");
}

##################################################
	 parts/シンボル 7
	 Layer:[ レイヤー 2 ], Frame:[ 10 ]
##################################################

gotoAndPlay(2);

##################################################
	 シンボル 6
	 Layer:[ レイヤー 2 ], Frame:[ 1 ]
##################################################

trace("init");
stop();

##################################################

 

Current timeline Mode

現在編集中のタイムラインのみを対象として出力。

Get Frame ActionScript Command
Main.fla
Aug. 23, 2008 0:40:6

##################################################
	 Current timeline(シーン 2)
	 Layer:[ レイヤー 1 ], Frame:[ 23 ]
##################################################

// シーン 2終了
this.stop();

##################################################

とか、シンボル編集中の場合には、

##################################################
	 Current timeline(シンボル 7)
	 Layer:[ レイヤー 2 ], Frame:[ 1 ]
##################################################

stop();

function hoge() :void {
    trace("hoge");
}

##################################################
	 Current timeline(シンボル 7)
	 Layer:[ レイヤー 2 ], Frame:[ 10 ]
##################################################

gotoAndPlay(2);

##################################################

といった、具合を出力パネルに書き出す。

 

Output ActionScript code

「Output ActionScript code」のチェックはASコード内容出力のある/なし。

 

Save the result in a file

「Save the result in a file」は出力パネルの内容をファイルに保存するかどうか。チェックした場合は、ファイル選択ダイアログが開きます。
Choose output file

 

この合作?をSpark projectにコミットしたのでバシバシ改良してください。

GetFrameActionScript - Spark project
http://www.libspark.org/wiki/e_s_jp/GetFrameActionScript


 

GetFrameActionScriptコマンド ダウンロード

GetFrameActionScript.mxp
http://www.libspark.org/svn/mxp/GetFrameActionScript/trunk/mxp/GetFrameActionScript.mxp

Flash 8 以降用です。
※インストールにはExtension Managerが必要。

 

利用方法

「コマンド」メニュー > GetFrameActionScript

 

ソースリポジトリ

GetFrameActionScript ソース
http://www.libspark.org/svn/mxp/GetFrameActionScript/trunk/src/

 

Related posts

[Flash]ライブラリの中でASが書いてあるやつを調べる(2)

ライブラリの中でASが書いてあるシンボルをチェックするJSFLの修正。

[Flash]ライブラリの中でASが書いてあるやつを調べる
http://violentcoding.com/blog/2008/08/05/archives/207

 

タイムライン上でASが書かれたフレームを取得するJSFLが思ってた内容では無くて、少し困ってました。

 

timeline 01

こんな感じで普通に5フレーム目「trace(”frame 5″);」と10フレーム目「trace(”frame 10″);」にASを書いた場合、JSFLの frame.actionScript でフレームに記述されたActionScriptを取得しようとする。


var targetLayer = fl.getDocumentDOM().getTimeline().layers[0];

// 5フレーム目
var asCode05 = targetLayer.frames[4].actionScript; // => trace("frame 5");
// 10フレーム目
var asCode10 = targetLayer.frames[9].actionScript; // => trace("frame 10");

これはこれで良いのだけど、実は5フレーム目以降でも途中にキーフレームが無いと、その前のキーフレームに書かれた内容を actionScript プロパティとして持っている。


var targetLayer = fl.getDocumentDOM().getTimeline().layers[0];

// 5フレーム目
var asCode05 = targetLayer.frames[4].actionScript; // => trace("frame 5");

// 6フレーム目
var asCode06 = targetLayer.frames[5].actionScript; // => trace("frame 5");
// 7フレーム目
var asCode07 = targetLayer.frames[6].actionScript; // => trace("frame 5");
// 8フレーム目
var asCode08 = targetLayer.frames[7].actionScript; // => trace("frame 5");
// 9フレーム目
var asCode09 = targetLayer.frames[8].actionScript; // => trace("frame 5");

// 10フレーム目
var asCode10 = targetLayer.frames[9].actionScript; // => trace("frame 10");

これだと、ASが書かれたフレームだけをしっかり区別できないのです。下みたいに6から9フレームも空白キーフレームになってれば、区別できるのですが、普通こんなことしませんし。
timeline 02

 

なので、昨日はASが書いてある「キーフレーム」だけをうまく選別できなくて、適当かつ強引に「同じASが続く場合は無視!」とやっていたのだけど、当然、意図的に同じASコードが続くフレームの場合には出力できない状態でした。

 

今日、そういえば、_level0.CUPPYさんのとこにキーフレームを行き来するJSFLがあったなと思い出して、それができるのなら、キーフレームが取得できるんじゃないかと試してみました。

キーフレーム間をワンタッチで行き来する|_level0.CUPPY
http://level0.cuppy.co.jp/2007/08/post_11.php

 

この中にでてくる frame.startFrame を使って、キーフレーム判定を試してみたらうまくASが書かれた「キーフレーム」だけを抽出できるようになりました。

ありがとう、_level0.CUPPYさん。

 

ということで、整理したり、なんらかの拡張機能に持っていくのは当分先になりそうですが、とりあえず使いたいという人は申し訳ないですが、早速修正するはめになったJSFLをダウンロードし直してくださいね。

libItemASCheckJSFL_0_2_0.zip

 

追記:

  • 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

    ありがとう、Tanablogさん。

     

    Related posts

    [Flash]ライブラリの中でASが書いてあるやつを調べる

    他の人が作った.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

    [Flash]TransformationPoint version 1.1.1

    Flash CS3 でオブジェクトの変形点をごにょごにょする拡張機能「TransformationPoint」を更新しました。

    TransformationPoint - Spark project
    http://www.libspark.org/wiki/e_s_jp/TransformationPoint

     

    回転と傾斜変形が適用されている場合での変形点の設定バグに対応。

    完全にその部分のテストを忘れていて、回転/傾斜が適用されてる場合に変形点を移動すると、変形点がとんでもない場所に設定されるようになってました。

     

    この更新でオブジェクトに回転が適用されている場合も変形点を設定できるようになりましたが、回転角度が-180,-135,-90,-45,0,45,90,135,180度の場合のみに限られます

    傾斜が適用されている場合(回転角度が「—」となっている時)や、上記以外の回転角度の場合には、変形点の設定対象から外れます。

     

    角度限定の理由は、変形に関するオブジェクトの値がMatrixで管理されているようで、どうしても変換時の誤差がでてしまうためです。

    例えば、変形パネルで回転角度を「90度」としていても、JSFLでelement.rotationを取ると「89.99824523925781」となりますし、オブジェクトのXY座標だけを設定する場合でも、回転や傾斜が設定されているとそちらに影響がでてしまうような具合です。

     

    ダウンロードはSpark projectで。

    ダウンロード version 1.1.1

    TransformationPoint.mxp
    http://www.libspark.org/svn/mxp/TransformationPoint/trunk/FlashCS3/mxp/TransformationPoint.mxp
    Flash CS3用です。
    ※インストールにはExtension Managerが必要です。

     

    ソースリポジトリ

    TransformationPoint ソース
    http://www.libspark.org/svn/mxp/TransformationPoint/trunk/FlashCS3/src/

     

    Related posts

    Pages: 1 2 3 Next