[ AS3 ] TweenMaxでピクピクする - 08/11/14 19:16
ボタンのロールオーバーアクションとして、以下の様な動きを付ける。
TweenMax.to(_mc, 0.5, {scaleX:1.2, scaleY:1.2, ease:Back.easeOut});
ロールオーバーしたときに20%拡大する動き。
さらにロールアウトしたときに元に戻す動きも付ける。
TweenMax.to(_mc, 0.5, {scaleX:1, scaleY:1, ease:Back.easeOut});
これだけだと問題ないんだけど、colorMatrixFilter を追加するとぴくぴくする(時がある)。
オーバー時のスクリプトに colorMatrixFilter を追加。
TweenMax.to(_mc, 0.5, {scaleX:1.2, scaleY:1.2, colorMatrixFilter:{brightness:1.5}, ease:Back.easeOut});
こうすると、ロールオーバーする時にボタンのふち辺りでオーバー/アウトが繰り返されるようになる(時がある)。
フィルターかけるときにアウトが呼ばれちゃう(時がある)んだなと予想。調べてはいない。ヨロシク。
ボタンの中のオブジェクトの mouseEnabled を false にしたり、ボタンに入れ子にしたエリア用のオブジェクトに addEventListener しても解決しない。あれこれ試した結果、フィルターを適用するオブジェクトの範囲がマウスイベントに反応する範囲と同じ(以上?)時にこれが起きると判明。
それじゃあと、ボタンの中身をフィルター適用のためのムービークリップ(filterMC)で包んで、その下のレイヤーに本来のボタンサイズより一回り大きい透明な塗りを追加。
スクリプトを以下の様に修正したら解決した。
//オーバー
TweenMax.to(_mc, 0.5, {scaleX:1.2, scaleY:1.2, ease:Back.easeOut});
TweenMax.to(_mc.filterMC, 0.5, {colorMatrixFilter:{brightness:1.5}, ease:Linear});
//アウト
TweenMax.to(_mc, 0.5, {scaleX:1, scaleY:1, ease:Sine.easeOut});
TweenMax.to(_mc.filterMC, 0.5, {colorMatrixFilter:{brightness:1}, ease:Linear});
上で(時がある)って書いてあるけど、アウトするかどうかはオブジェクトのサイズと拡大の比率が絡んでるんじゃなかろうかと思う。実感では幅や高さが100を超えると起きないけど、50以下になるとぴくぴくする。
試してないけど colorMatrixFilter 以外でも起きると予想されるので、こういう事が起きたら入れ子にしようと覚えとこ。
ボタンサイズが微妙にでかくなるのが気持ち悪いな。
« [ ねこ ] にょろり猫 | ブログトップ | [ シールオンライン ] さすらいの帽子が釣れた »
トラックバックURL :