JSFLメモ

JSFLメモ久しぶりにJSFLを自作する機会があったのでそのメモ。
いちいち何ができて何ができないのか分かりません。

■アイテム、インスタンスが『ボタン』かどうかを調べる
ライブラリにあるアイテムはitemTypeで「movie clip」、「graphic」、「button」等取得できます。
ステージ上にあるシンボルの場合instanceTypeでは、ムービークリップ、ボタン、グラフィックが一緒くた「symbol」としか表示されません。
何とかならないか調べたところ、ボタンインスタンスであればbuttonTrackingが取得できるのでそれで対応。

//ライブラリのアイテムがボタンか?
if(fl.getDocumentDOM().library.items[0].itemType == "button")

//ステージのインスタンスがボタンか?
if(fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].buttonTracking != undefined)

 
■キーフレームかどうかを調べる
そのフレームがキーフレームかを調べるには、公式リファレンス(注:PDF) の例そのまんまですが、frame.startFrameプロパティが配列のインデックスと一致しているかどうかを確認。

//キーフレームか否か?
var frameArray = fl.getDocumentDOM().getTimeline().layers[0].frames;
var n = frameArray.length;
for (i=0; i<n; i++) {
	if (i==frameArray[i].startFrame) {
		alert("Keyframe at: " + i);
	}
}

//現在のタイムライン全体からキーフレームに置かれている要素一つ一つを走査する
var tl = fl.getDocumentDOM().getTimeline();
var layerNum = tl.layers.length;
for (var l = 0; l < layerNum; l++) { 
	var frameNum = tl.layers[l].frames.length;
	for (var f = 0; f < frameNum; f++) { 
		//キーフレームか否か
		if (f == tl.layers[l].frames[f].startFrame) {	
			var elementNum = tl.layers[l].frames[f].elements.length;
			var elts = tl.layers[l].frames[f].elements; 
			for (var e = 0; e < elementNum; e++) { 
				var elt = elts[e];
				fl.trace("element of Keyframe : " + elt);
			}
		}
	}
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です