BLOG



LWF:初期化時にインスタンス名からフレーム移動

例えば、「card」という名前のMovieClipシンボルが図のように5つあって、それぞれ「c1~c5」のインスタンス名がついている。
sample01_pic_01

MovieClipシンボルは次のように、フレームごとに別の画像が入っている感じ。
sample01_pic_02

これをLWFの初期化のタイミングでインスタンス名に応じて、フレーム移動して表示を切り替えたい(c3 ならば 3フレーム目の画像を出す)としたいとき、ちょっと手こずった。

 

1)LWFのonloadのタイミングで指定した場合

→ 例えば次のようにHTMLのloadLWF()のonloadパラメータに記述してみる。

"onload": function( lwf )
{
  window.lwf = lwf;

  window.lwf.rootMovie.c1.gotoAndStop( 1 );
  window.lwf.rootMovie.c2.gotoAndStop( 2 );
  window.lwf.rootMovie.c3.gotoAndStop( 3 );
  window.lwf.rootMovie.c4.gotoAndStop( 4 );
  window.lwf.rootMovie.c5.gotoAndStop( 5 );
 }

これは反映されない。
ブラウザコンソールでエラーが出ているので確認すると、次のようになっている。

Uncaught TypeError: Cannot read property 'c1' of undefined
※ Google Chromeの場合

シンボルの準備ができていないので「undefined」扱いとなり、gotoAndStop()しても利かない模様。

 

2) Flashの_rootのフレームスクリプトでJavaScriptで呼び出す

→ 次のような構成でJavaScriptを記述。

■ 1フレーム目:
/* js
this.c1.gotoAndStop( 1 );
this.c2.gotoAndStop( 2 );
this.c3.gotoAndStop( 3 );
this.c4.gotoAndStop( 4 );
this.c5.gotoAndStop( 5 );
*/

■ 2フレーム目:
フレームラベルで「loop」を設定

■ 16フレーム目(最終フレーム):
/* js
this.gotoAndPlay("loop");
*/

sample01_pic_03
反映されるがワンテンポ遅れる。一瞬始めの状態の「1」の表示が見切れてしまう。

/* js_load    (MovieClipが生成されたタイミングで1回だけ実行)
/*js_postLoad    (MovieClipが再生準備が整った時に1回だけ実行)
という指定の方法もあるので、変更して試してみたが、これも特に変わらず。
(書きだされるJavaScriptは変更をうけているが…)

 

3) Flashのcardシンボル内のフレームスクリプトでJavaScriptで呼び出す

→ _root/c1にもぐって、cardシンボル内のフレームスクリプトに以下のように記述。

stop();

/* js

// 3) これだとタイミングがバッチリ

// インスタンス名から、番号部分を取得
var _id = this.name.substr( 1 );
// そのままだと、文字列扱いなので数値化
_id = parseInt( _id );
// フレーム移動で切り替え
this.gotoAndStop( _id );

*/

これはうまく反映された。ここまでもぐって記述しないとダメみたい?

という一連の結果でした。
その他、LWFでも有効となっているtellTarget()も試してみたのですが、ちょっと使い方が分らず。

参考までに、検証に使用したファイル一式(Fla_CS6)も置いておきます。
sample01.zip

コメントを残す

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

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

WP-SpamFree by Pole Position Marketing

トラックバックURL : http://tool-hp.com/blog/239/trackback/