Home > Archives > 2011-02

2011-02

東京てら子 Vol.13 『Flashでの演出&落とし込み方』


東京てら子 Vol.13 『Flashでの演出&落とし込み方』

東京てら子Vol.13を、2月26日(土)に開催します。

今回は、いつものActionScriptのマニアックな話ではなく、「この表現、いいよね!」といった、考え方&(Flashへの)落とし込み方になるかと思います。

ActionScriptの話をしたい方は、自由発表枠をお使いくださいませ。

詳細&参加表明はこちらからどうぞ!

ステージにあるシェイプやグループ化されたものを、連番付きのシンボルに一括変換するJSFL


一昨日くらいでしたか、「ステージにあるシェイプやグループ化されたものを、連番付きのシンボルに一括変換するJSFLってないの?」とTLに流れていたので、自分の勉強がてら、それっぽいのを作ってみました。

で、作成しているときにハマッたことを、書いておきます。

同一フレーム内には、シェイプは一つが良さそう

DLしたflaファイル(CS3形式)とJSFLを試してもらうと分かると思いますが、ステージ上に置いてあるシェイプやテキストなどが、MovieClipシンボル(hoge_000_mcみたい)に連番付きで変換されます。

その際、同一フレーム内にシェイプを二つ置いていると、ちょっと変なことになります。

シェイプがそれぞれMovieClipシンボルに変換されるのではなく、二つのシェイプが一つのMovieClipシンボルに変換されてしまうんですね…

なので、このJSFLを使う場合は、同一フレーム内にはシェイプは一つにしておくといいと思います。

複数シェイプを配置する場合は、(サンプル通りに)グループ化しておくと問題なく使えます。

elementsに関して

for文の中のelementsの箇所なんですが、elements[i]なんじゃない? と思われた方もいらっしゃるかもしれません。

elementsの説明・その1

こんな感じで、シェイプが二つあったとします。

この状態で、elements[0]をconvertToSymbolで、シンボルに変換したとします。

elementsの説明・その2

すると、こんな感じになるかと思いますよね?

ところが、実際は…

elementsの説明・その3

このようになります。(シンボル化したものは、elementsの最後尾に移動し、残りがひとつずつ前に押し出される)

なので、for文が回っているうちは、常にelementsの先頭(0)を取得してあげると、まだシンボルに変換していないものを選択出来ます。

convertToSymbolした後は…

先の手順で要素を選択し、convertToSymbloを使って、シンボルに変換すると、その要素は選択されたままになっています。

選択を解除せずにfor文を回してしまうと、MovieClipが入れ子の状態になってしまうので、fl.getDocumentDOM().selectNone();を使って、選択を解除しています。

とりあえず作ったものなんで、使い勝手は悪いかと思いますが…

JSFでレイヤー名を取得する


JSFを使ってやりたいことがあって、いろいろ試しているので、忘れないようにメモ。

レイヤー名を取得する

レイヤーが3つ作成した場合

こんな感じでフォルダがあって、それぞれのレイヤー名を取得したい場合、こんな感じでJSFを書くと取得出来た。

var count = fw.getDocumentDOM().layers.length;

for (var i = 0; i < count; i++){
	alert(fw.getDocumentDOM().layers[i].name);
}

これを実行すると、レイヤー1→レイヤー2→Webレイヤーと表示される。

layers[0]は、一番下にあるレイヤー1ということになります。

サブフォルダを作成した場合

次に、上の様にサブフォルダを作成してみた場合、先と同じJSFを実行してみると…

レイヤー1→レイヤー3→レイヤー2→Webレイヤーと表示される。

layers[0]は、一番下にあるレイヤー3ではなく、レイヤー1(親フォルダ)になるんですねぇ…

Flashとは逆になる

ちなみにですが、JSFLを使ってFlashのレイヤーを取得する場合は、レイヤーのインデックス0は、一番上のレイヤーになります。

Home > Archives > 2011-02

Search
Feeds
Meta

flashDevelopスポンサー

Return to page top