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 2010-2-2

Papervision3D 2.0 alpha(08.08.08)を利用

メインクラス(ReflectionViewを継承することで反射面が表現できます)
Get Adobe Flash player
by wf_mizzkey 02 Feb 2010
    Embed
/**
 * Copyright wf_mizzkey ( http://wonderfl.net/user/wf_mizzkey )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/ogpL
 */

package
{
	import flash.display.*;
	import flash.events.*;
	import flash.utils.*;
	
	// Papervision3D 2.0 alpha(08.08.08)を利用
	import org.papervision3d.core.effects.view.ReflectionView;
	import org.papervision3d.cameras.*;
	import org.papervision3d.materials.*;
	import org.papervision3d.objects.*;
	import org.papervision3d.objects.primitives.*
	
	[SWF(width = "720", height = "480", frameRate = "60", backgroundColor = "#001122")]
	
	/**
	 * メインクラス(ReflectionViewを継承することで反射面が表現できます)
	 */
	public class B extends ReflectionView
	{	
		/**
		 * Constructor
		 */
		public function B()
		{
			stage.quality = StageQuality.LOW;
			
			// オブジェクトを作成します
			var sphere:DisplayObject3D = createSphere();
			var earth:Plane = new Plane(new WireframeMaterial(0xFFFFFF, .5), 1000, 1000, 10, 10);
			
			// オブジェクトの角度を調整します
			sphere.rotationX = 90;
			earth.rotationX = 90;
			
			// 3D表示リストに追加します
			scene.addChild(sphere);
			scene.addChild(earth);
			
			// 反射面の高さを設定します
			surfaceHeight = 0;
			
			// 毎フレームの演出を設定します(匿名関数で楽して書いてます)
			addEventListener(Event.ENTER_FRAME, function(event:Event):void
			{
				// sphereの揺らぎを設定しています
				sphere.y = Math.sin(getTimer() / 200) * -25 + 240;
				
				// カメラが演習を回っているように設定しています
				camera.x = 500 * Math.sin(getTimer() / 1000);
				camera.y = 600;
				camera.z = 500 * Math.cos(getTimer() / 1000);
				
				// カメラが近づいたり離れたりする演出
				camera.zoom = 10 * Math.sin(getTimer() / 2000) + 40;
				
				// ReflectionViewのレンダリング
				singleRender(); 
			});
		}
		
		/**
		 * sphere
		 */
		private function createSphere():DisplayObject3D
		{
			// Sphereのコンテナーを作成
			var sphere :DisplayObject3D = new Sphere();
			var mat:WireframeMaterial = new WireframeMaterial(0xff00dd);
			mat.doubleSided = true;
			var sphere1  :Sphere = new Sphere(mat, 200, 16, 16);
			sphere1.addChild(sphere);
			// Sphereのインスタンスを返却
			return sphere;
		}

	}
}