今回は,
インスタンス同士を関連づける
練習のサンプルには,
第31回
前回のスクリプト2は,
button0_mc.addEventListener(MouseEvent.ROLL_OVER, xShow);
button1_mc.addEventListener(MouseEvent.ROLL_OVER, xShow);
button2_mc.addEventListener(MouseEvent.ROLL_OVER, xShow);
button0_mc.show_mc = my0_mc;
button1_mc.show_mc = my1_mc;
button2_mc.show_mc = my2_mc;
// ...[中略]...
function xShow(eventObject):void {
var my_mc:MovieClip = eventObject.currentTarget as MovieClip;
var show_mc:MovieClip = my_mc.show_mc;
// ...[中略]...
show_mc.visible = true;
// ...[中略]...
}
今回は少し考え方を変えて,
これまで学んだ方法でいえば,
var showList:Object = new Object();
// ...[中略]...
showList.button0_mc = my0_mc;
showList.button1_mc = my1_mc;
showList.button2_mc = my2_mc;
// ...[中略]...
function xShow(eventObject):void {
var show_mc:MovieClip = showList[eventObject.currentTarget.name];
スクリプト1 Objectに設定した各インスタンス名のプロパティに対応するインスタンスを納める
// タイムライン: メイン
// MovieClipインスタンス
// サムネイル: thum0_mc~thum2_mc
// 表示画像: my0_mc~my2_mc
// フレームアクション
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;
xClearAll();
function xShow(eventObject):void {
// Objectからインスタンス名のプロパティに納められた対応する参照を得る
var show_mc:MovieClip = showList[eventObject.currentTarget.name];
xClearAll();
show_mc.visible = true;
show_mc.filters = filters_array;
}
function xClearAll():void {
my0_mc.visible = false;
my1_mc.visible = false;
my2_mc.visible = false;
my0_mc.filters = [];
my1_mc.filters = [];
my2_mc.filters = [];
}
リスナー関数xShow()は,
もっとも前回の最後に,
- ※1
- ActionScript 3.
0におけるインスタンス名の扱いと注意点については, F-site 「MovieClipインスタンスとインスタンス名」 を参照してほしい。