写真の簡単なviewer
簡単な写真のviewerです。
解説
Planeに写真を貼る
// Planeを作成 var mat:BitmapMaterial=new BitmapFileMaterial("./imgs/img"+i+".jpg"); mat.doubleSided =true; var p:Plane=new Plane(mat, 200, 200);
まず、BitmapMaterialで画像を指定し、それをPlaneの生成時に引数で渡してあげればOK
doubleSidedをtrueにするとPlaneの両面に画像が表示されます。
あとはsin,cosを使って座標を計算して、ぐるぐる回しています。
そしてPlaneがクリックされたらTweenerを使って中央へ移動。
中央にあるPlaneが動いては困るのでそれだけ停止させています。
こんな感じで
private function onFrame(e:Event):void { t--; // 360°を15分割して、Planeを並べていく。 for(var i:int=0; i < array.length; i++) { // 角度を計算 var theta:Number=360 * i / P_NUM + t; // 半径を計算 var radisu:Number=1000; // 配列からPlaneを取ってきてるよ! var p:Plane = array[i] as Plane; //選択中のプレーンならば //本来いるべき位置を記録しておく if(p == s_plane){ // ローテーションの計算 p.extra.rotationY = -(theta-stage.frameRate + 90); // pの座標を計算する p.extra.x=radisu * Math.cos((theta-stage.frameRate) * Math.PI / 180); p.extra.z=radisu * Math.sin((theta-stage.frameRate) * Math.PI / 180); }else{ // ローテーションの計算 p.rotationY = -(theta + 90); // pの座標を計算する p.x=radisu * Math.cos(theta * Math.PI / 180); p.z=radisu * Math.sin(theta * Math.PI / 180); } } }
中央から戻す時にその座標が分かるようにextraプロパティ内に座標とrotationは計算し記録しておきます。
ただこのプログラムだと中央のPlaneとの入れ替え時の動作が少し滑らかではありません。
あとで、それを直します。