「サインコサイン(2)」の続き。
前回のサンプルを3Dっぽく見えるように加工してみる。
回転しているのがわかりやすいように、MC「ball」にナンバーをうつ。
【製作過程】
基本はすべて前回と同じ。MC「ball」にダイナミックテキスト(インスタンス名:num)をフォントサイズ「12」で埋め込む。さらに、Y軸の半径をx軸の半径の半分にする。
以下、コード。
//ballの数
var ball_sum:Number=20;
//半径
var radiusX:Number=70;
var radiusY:Number=radiusX/2;
//中心値
var center:Number=100;
for(var i:Number=0;i<ball_sum;i++){
var ball:MovieClip=_root.attachMovie("ball","ball"+i,i);
//角度取得
var angle:Number=360/ball_sum*i;
//オリジナルプロパティ
ball.angle_value=angle;
//ラジアン取得
var radian:Number=Math.PI/180*angle;
ball._x=Math.cos(radian)*radiusX+center;
ball._y=Math.sin(radian)*radiusY+center;
ball.num.text=i;
}
_root.onEnterFrame=function():Void{
for(var i:Number=0;i<ball_sum;i++){
var ball:MovieClip=this["ball"+i];
ball.angle_value+=5;
var radian:Number=Math.PI/180*ball.angle_value;
ball._x=Math.cos(radian)*radiusX+center;
ball._y=Math.sin(radian)*radiusY+center;
}
}
次に、遠近感をつけてみる。
「ball._y」は65から135を行き来している(中心点100で、x軸の半径の半分35をy軸方向に往復している)ので、それをそのまま「ball._xscale」と「ball._yscale」に適用する。
また、MC「ball」の重なり具合がおかしいので、深度を調整する。
手前にあるほど深度が高く、奥にあるほど深度が低くなればよいので、MC「ball」のY座標を深度に適用する。
以下、コード。
//ballの数
var ball_sum:Number=20;
//半径
var radiusX:Number=70;
var radiusY:Number=radiusX/2;
//中心値
var center:Number=100;
for(var i:Number=0;i<ball_sum;i++){
var ball:MovieClip=_root.attachMovie("ball","ball"+i,i);
//角度取得
var angle:Number=360/ball_sum*i;
//オリジナルプロパティ
ball.angle_value=angle;
//ラジアン取得
var radian:Number=Math.PI/180*angle;
ball._x=Math.cos(radian)*radiusX+center;
ball._y=Math.sin(radian)*radiusY+center;
ball.num.text=i;
}
_root.onEnterFrame=function():Void{
for(var i:Number=0;i<ball_sum;i++){
var ball:MovieClip=this["ball"+i];
ball.angle_value+=5;
var radian:Number=Math.PI/180*ball.angle_value;
ball._x=Math.cos(radian)*radiusX+center;
ball._y=Math.sin(radian)*radiusY+center;
ball._xscale=ball._yscale=ball._y;
//MC「ball」のY座標を深度として扱い、重なり具合を調整する
ball.swapDepths(Math.floor(ball._y));
}
}

コメントする