- ベストアンサー
画像表示をアルファでフェードイン&アウト AS3
AS3初心者です。 ステージ上にサムネールを並べ、ロールオーバーで対応する大きい画像を表示するムービー http://gihyo.jp/dev/serial/01/as3/0032?page=1 ロールオーバーすると大きい画像がアルファでフェードアウト(今表示している大きい画像)&フェードイン(新しく表示する大きい画像)で入れ替わるようにしたいのですが。 うまくアルファのスクリプトを入れることができません。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
書かれていらっしゃる http://gihyo.jp/dev/serial/01/as3/0032?page=1 の本題は page=2 の方の Dictionaly クラスを使うということですが そのページの本題の件は全く抜きにして(全く無視して), page=1 の方に書かれている状況と page=1 の最後のスクリプトを利用する方針で行くという意味ですか? 良くわかりませんので, とりあえずはそういう方向(page=2 は無視する方向)で回答します。 そしてさらに page=1 の最後のスクリプトですが 最初の前文とスクリプト本体にあるインスタンス名とがずれています。。。 > // サムネイル: thum0_mc~thum2_mc . ↓ずれている↑ > button0_mc.addEventListener(MouseEvent.ROLL_OVER, xShow); つまりどちらかが間違っているということですが 前文の方が間違っているということにします。 というわけで クロスフェードさせる場合のスクリプト変更例です↓ //------------------------------------------ // タイムライン: メイン // MovieClipインスタンス // サムネイル: button0_mc~button2_mc // 表示画像: my0_mc~my2_mc // フレームアクション //Tweenクラスとeasingクラスのインポート import fl.transitions.Tween; import fl.transitions.easing.*; var glow:GlowFilter = new GlowFilter(0x000033); var dropShadow:DropShadowFilter = new DropShadowFilter(); var filters_array:Array = [glow,dropShadow]; var showList:Object = new Object();// 新規Objectインスタンスの生成 button0_mc.addEventListener(MouseEvent.ROLL_OVER, xShow); button1_mc.addEventListener(MouseEvent.ROLL_OVER, xShow); button2_mc.addEventListener(MouseEvent.ROLL_OVER, xShow); // インスタンス名のプロパティに対応するインスタンスの参照を格納 showList.button0_mc = my0_mc; showList.button1_mc = my1_mc; showList.button2_mc = my2_mc; //my○_mc の表示順を一旦下に沈めておく setChildIndex(my0_mc,0); setChildIndex(my1_mc,0); setChildIndex(my2_mc,0); function xShow(eventObject):void { // Objectからインスタンス名のプロパティに納められた対応する参照を得る var show_mc:MovieClip = showList[eventObject.currentTarget.name]; //子表示インスタンスの数を得る var child_n:int = numChildren; //もし対応する my○_mc の表示順が一番上でなければ if (getChildIndex(show_mc) != child_n - 1) { //対応する my○_mc の表示順を一番上にする setChildIndex(show_mc,child_n - 1); //対応する my○_mc のアルファを 0 から 1 に 1.2 秒でトゥイーンさせる new Tween(show_mc,"alpha",None.easeNone,0,1,1.2,true); } } xClearAll(); function xClearAll():void { my0_mc.alpha = 0; my1_mc.alpha = 0; my2_mc.alpha = 0; my0_mc.filters = filters_array; my1_mc.filters = filters_array; my2_mc.filters = filters_array; } //------------------------------------------ 現状では切り替える my○_mc が3枚しかないため あまり早くグチャグチャと切り替えるとクロスフェードが変になります。 その点は御容赦ください。
お礼
BlurFiltan 様 早速のご回答ありがとうございます。 クロスフェードしました。イメージどおりです。 スクリプトの、 // Objectからインスタンス名のプロパティに納められた対応する参照を得る var show_mc:MovieClip = showList[eventObject.currentTarget.name]; //子表示インスタンスの数を得る var child_n:int = numChildren; で、 なぜ?ロールオーバーに対応するのですか? 凄すぎて???? まだまだ、勉強です。