読者です 読者をやめる 読者になる 読者になる

wonderfl中

ActionScript3 wonderfl

現在wonderfl中。
皆さんの凄いソースが上がっていますが、自分は地味に3Dについて研究中。


↑でとりあえずrotationX,rotationY,rotationZで回るのは分かった、がソースが汚い・・・。



↑も回転&無駄にズームさせてみただけですが、こちらは以下のようにして回転&Zソート。
でも、もっといい方法がありそう・・・。

//this.rotateXとthis.rotateY分回転させるMatrix3D
var mat:Matrix3D = new Matrix3D();
mat.appendRotation(this.rotateX, Vector3D.X_AXIS);
mat.appendRotation(this.rotateY, Vector3D.Y_AXIS);

//画面の中心へ
this.x = this.stage.stageWidth / 2;
this.y = this.stage.stageHeight / 2;
this.z = 0;

var i:int;
for (i = 0; i < POINT_NUM; i++)
{
  var point:Ball = this.points[i]; //配列から1つだけ取り出す
  
  //回転後の座標を取得する
  var vectorPoint:Vector3D
   = mat.transformVector(point as Vector3D);

  //取得した座標を反映する
  point.x = vectorPoint.x;
  point.y = vectorPoint.y;
  point.z = vectorPoint.z;
}
//Zソートする
//pointsはVector.<Ball>
//sortメソッドの引数はFunction型
this.points = this.points.sort(compare);

 ・
 ・ 省略
 ・
 
/**
 * Zソート
 */
private function compare( x:Ball, y:Ball ):Number
{
  return y.z - x.z;
}