VR2_deutschwall
[SWF(width = "465", height = "465", backgroundColor = "0", frameRate = "60")]
with programing from pv3d book by ikeda "clockmarker", thank you.
/**
* Copyright kazgo2 ( http://wonderfl.net/user/kazgo2 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/73aA
*/
package {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.net.URLRequest;
import flash.system.LoaderContext;
import flash.system.Security;
import org.papervision3d.cameras.*;
import org.papervision3d.view.*;
import org.papervision3d.materials.*;
import org.papervision3d.objects.primitives.*
import org.papervision3d.materials.utils.*;
[SWF(width = "465", height = "465", backgroundColor = "0", frameRate = "60")]
public class sphereMain extends BasicView {
public function sphereMain() {
// BasicViewの初期化
super(0, 0, true, false, CameraType.FREE);
Security.allowDomain("kazumiworx.com");
Security.loadPolicyFile("http://kazumiworx.com/crossdomain.xml");
// カメラを原点に配置
camera.x = camera.y = camera.z = 0;
// 画質を「低」にして高速化
stage.quality = StageQuality.LOW;
// マテリアル
var material:BitmapFileMaterial = new BitmapFileMaterial("http://kazumiworx.com/kmmt16/images/deutsch_wall.jpg", true);
material.opposite = true;
// 球体を作成
var sphere:Sphere = new Sphere(material, 25000, 30, 30);
scene.addChild(sphere);
// マウスのインタラクティブを設定しています
addEventListener(Event.ENTER_FRAME, loop);
addEventListener(MouseEvent.MOUSE_WHEEL, wheelHandler);
// レンダリングを開始します
startRendering();
}
// マウスの位置に応じてインタラクティブを設定しています
private function loop(e:Event):void {
// カメラの目標となる視線方向を計算
var rotY:Number = 480 * mouseX/(stage.stageWidth);
var rotX:Number = 180 * mouseY/(stage.stageHeight) - 90;
// イージングの公式を使ってカメラの値を更新
camera.rotationY += (rotY - camera.rotationY) * 0.1;
camera.rotationX += (rotX - camera.rotationX) * 0.1;
}
// マウスホイールでカメラのズーム値を調整します
private function wheelHandler(e:MouseEvent):void {
// ホイールの値をズーム値に加える
camera.zoom += e.delta / 10;
// カメラのズーム値は1以下にならないように指定
if (camera.zoom < 1) camera.zoom = 1;
}
}
}