In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

VR2_deutschwall

[SWF(width = "465", height = "465", backgroundColor = "0", frameRate = "60")] 
with programing from pv3d book by ikeda "clockmarker", thank you.
Get Adobe Flash player
by kazgo2 08 May 2016
    Embed
/**
 * 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;
        }
    }
}