mod002 コンポーネントのマウスオーバー時拡大

2007.7.14公開

flashPlayer versionver6.0r65以降

マウスが乗ったコンポーネントを拡大させます。
TextField等でonRollOverイベントを受け取る術が見つからなかったため、マウス座標を元に判定を行っています。

//コンポーネントのインスタンス名はcomp1及びcomp2
var compArray:Array = new Array();//コンポーネント格納配列
var compNumber:Number = 2;//コンポーネント数
var bigScale:Number = 150;//コンポーネント拡大時スケール(%)
 
//全コンポーネントの配列への格納とx座標y座標の取得
for(var i =1 ; i <= compNumber ; i++){
if(i <= compNumber) compArray[i] = eval("comp" + i);//配列への格納
compArray[i].nextScale = 100;//通常時は100、拡大時は150

//拡大時のコンポーネントの左上と右下のx座標y座標を保持
compArray[i].x1 = compArray[i].x;
compArray[i].x2 = compArray[i].x + compArray[i].width * bigScale / 100;
compArray[i].y1 = compArray[i].y;
compArray[i].y2 = compArray[i].y + compArray[i].height * bigScale / 100;
}

//コンポーネント上にマウスが乗った際の拡大表示
_root.onEnterFrame = function():Void{
for(var i = 1 ; i <= compNumber ; i++){
if(_root._xmouse>compArray[i].x1 && _root._xmouse compArray[i].y1 && _root._ymouse < compArray[i].y2){
compArray[i].nextScale = bigScale;//上にマウスがある場合はnextScaleを150にする
}
else{
compArray[i].nextScale = 100;//上にマウスがない場合はnextScaleを100にする
}
//表示スケールをnextScaleに近づけていく。2で割っているのは拡大縮小に視覚的変化を持たせるため
compArray[i].scaleX += (compArray[i].nextScale-compArray[i].scaleX) / 2;
compArray[i].scaleY += (compArray[i].nextScale-compArray[i].scaleY) / 2;
}
}

ダウンロード
サンプル