smart OR smart

Masato Nakamura weblog

Tweenerが動いてる時にgotoAndPlayはちょっと注意?

Posted on | 7月 31, 2009 | 1 Comment

Flashの記事です。
なので、分からない人はスルー推奨。

1.Tweener をAS2.0ベースで使ってた。
FilterShortcutやColorShortcutも使ってた。てかColorの_brightnessを多用。

2.よくある、写真が流れてテキストが出てきて最後ロゴが出るっていうスプラッシュ。
いかにもなムービーです。なお、フルスクリーンっていうか、全画面。

3.で、スプラッシュなんで、SKIPボタンを実装してた。
SKIPボタンのノリとしては、単にムービーの終わりのほうにラベル”last”などとつけて、
ボタンを押したらgotoAndPlay(“last”);でそこへ飛ばすというスクリプト。なんてこたあない。
飛んだ先の演出としては、ロゴが出るまでの最後の締めとして、いろいろしてた。
copyrightが下から出てきたりとか、メニューが浮かび上がったりとか、そんなん。
で、最後にスライドショー。写真が何枚か入れ替わるというもの。

4.どっかのタイミングでSKIPボタンを押すと、変になるバグ発生。
ここ大事。状況を以下。
Tweenerの機能だけでなく、スクリプトが一通り死んだっぽくなる。
全画面なので、オブジェクトにthis._x=Stage.width/2とかやって中心に置いてたけど、
それすらも効いていないようになった。とうぜんTweenerも死亡。
ムービークリップアクションも、フレームアクションも両方死亡。
てか、そもそも飛びやしない。

5.状況を精査すると、どうやらTweenerが動いている時のみっぽい。
さらに言うと、Tweenerのスペシャルプロパティ使っている時のみ。
単純に_alpha:0などの基本機能では、起こらない。
なので、以下みたいなスクリプトだと死亡。
Tweener.addTween(target_mc,{_brightness:-2.55,_Blur_blurX:21,time:1});
上記スクリプトが動いている1秒間のあいだにSKIPボタンを押すと死亡する。
むー?

6.SKIPボタンに、removeAllTweensをしてみた。
飛ぶようになった。
gotoAndPlayがきくようになった。でもその先で死亡してる。なんやねん。
あ、でもstop();だけは効いてんのか。そこで停まってんもんね。
演出が行われないどころか、スライドショーもしねえ。真っ暗。

7.試行錯誤してみた。
ラベルlastの動きを、ぜんぶを一つのムービークリップ内に詰めてみた→→ダメ×
ラベルlastの動きを、別のシーンにしてそこへ飛ばしてみた→→ダメ×

8.スペシャルプロパティをきってみた。
そこでだけおかしくなるとするならば、原因はそこだろう。
ってことで、_brightnessとかを単なる_alpha:0とかに変えてみた→→成功○!

9.仕方ないので、泣く泣くそれで納品した。
時間詰まってたし、しょうがないのでそのまんま行った……。
不幸中の幸いだったのは、スペシャルプロパティの項目はあくまでもサブ的な扱いで、
なくても演出的にはさほどの変化はなかった、というところか。
だけど、ディティールのレベルで妥協せざるをえなくなったので、すごい居心地が悪い。

10.今後は
これがAS2.0だから起きたのかどうか、っていうところ。
問題としては、スペシャルプロパティが稼働中は、gotoAndPlayとかで飛ばすな、ってことだけど
それだと表現力が落ちるから困るような、そうでないような。
スクリプトで管理すべきなのは、このての全画面スプラッシュであれば、
座標ぐらいなもんだとは思うので、まあ、スペシャルプロパティを他でいじればいいっちゃいい。
タイムラインでやったっていいわけだし。
再現性が高いのか分からないけど、検索してもヒットしなかったから、
そもそも僕のムービーの作り方がアレなんだろうな、とは思った。
タイムラインでいいじゃん!って言われればその通りなんだけどねぇ。

というわけで、スペシャルプロパティが動いてるときは、gotoAndPlay、Stopなどは注意。
あんまりハマらなそうな罠ではあるけども。

Comments

One Response to “Tweenerが動いてる時にgotoAndPlayはちょっと注意?”

  1. masato
    8月 1st, 2009 @ 5:50 PM

    スペシャルプロパティの動きを、_rootでやってると死亡するけど、それをなんかのムービークリップの中で行うと大丈夫になった。

    _root.gotoAndPlay(“last”);と何か関係ある?

    スペシャルプロパティはムービークリップん中でやれば問題ないのか。

Leave a Reply