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

flash on 2009-11-20

Get Adobe Flash player
by hacker_owekah98 24 Nov 2009
    Embed
/**
 * Copyright hacker_owekah98 ( http://wonderfl.net/user/hacker_owekah98 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/k3T0
 */

package
{
	import flash.events.Event;
	import flash.display.*;
	import flash.text.*;

	import org.papervision3d.view.*;
	import org.papervision3d.scenes.Scene3D;
	import org.papervision3d.cameras.Camera3D;
	import org.papervision3d.render.BasicRenderEngine;

	import org.papervision3d.objects.primitives.*;
	import org.papervision3d.materials.BitmapFileMaterial;
	import org.papervision3d.materials.utils.*;
	import org.papervision3d.events.InteractiveScene3DEvent;

	import org.papervision3d.materials.special.ParticleMaterial;
	import org.papervision3d.objects.special.ParticleField;
	import org.papervision3d.core.geom.renderables.Particle;
	import org.papervision3d.core.geom.Particles;

	public class test8 extends Sprite
	{
		public var viewport:Viewport3D;
		public var scene:Scene3D;
		public var camera:Camera3D;
		public var render:BasicRenderEngine;
		public var material:BitmapFileMaterial;
		public var particleMat:ParticleMaterial;

		public var cube:Cube;
		public var sphere:Sphere;
		public var particles:ParticleField;

		public var mouse_over:Boolean = false;		//	マウスが乗っているかの判定フラグ

		public var zoom_val:Number = 1.0;			//	拡大・縮小の速度
		public var zoom_max:Number = 100.0;			//	拡大の最大倍率値
		public var zoom_min:Number = 50.0;			//	縮小の最小倍率値

		public var rot:Number = 0;

		public function test8()
		{
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.frameRate = 20;

			Init();

			//	宇宙空間の粒子を構築
			CreateParticle();

			//	地球の構築
			CreateEarth();


			//	各種のイベント処理の定義
			CreateAddEventList();
		}




		//********************************************************************************************************************
		//	起動時の初期化
		//********************************************************************************************************************
		public function Init():void
		{
			//---------------------------------------------------------
			//	Viewport3D
			//---------------------------------------------------------
			//		(1) 横幅
			//		(2) 縦幅
			//		(3) ステージのサイズ変更
			//		(4) マウスイベントを有効
			//---------------------------------------------------------
			viewport = new Viewport3D(800, 600, false, true);
			viewport.opaqueBackground = 0x00084;					//	背景色
			addChild(viewport);

			render	= new BasicRenderEngine();
			scene	= new Scene3D();
			camera	= new Camera3D();

		}

		//********************************************************************************************************************
		//	イベント処理の定義
		//********************************************************************************************************************
		private function CreateAddEventList():void
		{
			//	常時処理のイベント処理
			addEventListener(Event.ENTER_FRAME , onEnterFrame);

			//	マウスのイベント処理
			sphere.addEventListener(InteractiveScene3DEvent.OBJECT_OVER, onOverEvent);	//	マウスが乗った時
			sphere.addEventListener(InteractiveScene3DEvent.OBJECT_OUT,  onOutEvent);	//	マウスが放れた時

		}

		//********************************************************************************************************************
		//	宇宙空間の粒子を構築
		//********************************************************************************************************************
		private function CreateParticle():void
		{
			particleMat = new ParticleMaterial(0xFFFFFF, 1);

			particles = new ParticleField(particleMat, 1000, 4, 2000, 2000, 2000);
			scene.addChild(particles);
		}


		//********************************************************************************************************************
		//	地球の構築
		//********************************************************************************************************************
		private function CreateEarth():void
		{
			material = new BitmapFileMaterial("earthmap1k.jpg");	//	画像ファイルの読込み
			material.interactive = true;							//	マウスイベントの送信を許可

			sphere = new Sphere(material, 300, 30, 30);				//	球の構築

			this.buttonMode = true;									//	マウスカーソルの形状を変更
			this.camera.zoom = zoom_min;							//	ズーム値を最小値に再設定

			scene.addChild(sphere);									//	シーンに球を追加構築
		}


		//********************************************************************************************************************
		//	常時処理のイベント処理
		//********************************************************************************************************************
		public function onEnterFrame(event:Event):void
		{
/*
			sphere.rotationX += 1;
			sphere.rotationY += 1;
			sphere.rotationZ += 1;
*/

			particles.yaw(1);						//	粒子の回転
			sphere.yaw(1);							//	地球の回転

			//	地球の拡大・縮小処理のためのカメラ調整処理
			MouseEventProc();

			//	レンダリングの描画
			render.renderScene(scene, camera, viewport);
		}

		//********************************************************************************************************************
		//	地球の拡大・縮小処理のためのカメラ調整処理
		//********************************************************************************************************************
		private function MouseEventProc():void
		{
			//	球の拡大・縮小処理による計算
			if (mouse_over == true)
			{
				//	拡大処理
				if (this.camera.zoom < zoom_max)
					this.camera.zoom += zoom_val;	//	拡大計算
				else
					this.camera.zoom = zoom_max;	//	最大値の制限
			}
			else
			{
				//	縮小処理
				if (this.camera.zoom > zoom_min)
					this.camera.zoom -= zoom_val;	//	縮小計算
				else
					this.camera.zoom = zoom_min;	//	最小値の制限
			}
		}

		//********************************************************************************************************************
		//	マウスが球に乗った時のイベント処理
		//********************************************************************************************************************
		private function onOverEvent(event:InteractiveScene3DEvent):void
		{
			mouse_over = true;		//	フラグ ON
		}

		//********************************************************************************************************************
		//	マウスが球から離れた時のイベント処理
		//********************************************************************************************************************
		private function onOutEvent(event:InteractiveScene3DEvent):void
		{
			mouse_over = false;		//	フラグ OFF
		}

	}
}