dポイントプレゼントキャンペーン実施中!

AS3初心者です。
ステージ上にサムネールを並べ、ロールオーバーで対応する大きい画像を表示するムービー

http://gihyo.jp/dev/serial/01/as3/0032?page=1

ロールオーバーすると大きい画像がアルファでフェードアウト(今表示している大きい画像)&フェードイン(新しく表示する大きい画像)で入れ替わるようにしたいのですが。

うまくアルファのスクリプトを入れることができません。


よろしくお願いします。

A 回答 (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枚しかないため
あまり早くグチャグチャと切り替えるとクロスフェードが変になります。
その点は御容赦ください。
    • good
    • 0
この回答へのお礼

BlurFiltan 様
早速のご回答ありがとうございます。

クロスフェードしました。イメージどおりです。

スクリプトの、
// Objectからインスタンス名のプロパティに納められた対応する参照を得る
var show_mc:MovieClip = showList[eventObject.currentTarget.name];
//子表示インスタンスの数を得る
var child_n:int = numChildren;
で、
なぜ?ロールオーバーに対応するのですか?
凄すぎて????
まだまだ、勉強です。

お礼日時:2012/09/12 20:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!