forked from: PV3Dその2

by s26 forked from PV3Dその2 (diff: 68)
-
remove しているの きえて くれない。せん けしたい
♥0 | Line 83 | Modified 2009-06-11 13:14:49 | MIT License
play

ActionScript3 source code

/**
 * Copyright s26 ( http://wonderfl.net/user/s26 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/s104
 */

// forked from sake's PV3Dその2

/*-
remove しているの きえて くれない。せん けしたい
*/

package
{
	import caurina.transitions.Tweener;
	import flash.display.Sprite;
	import flash.events.Event;
	import org.papervision3d.cameras.Camera3D;
	import org.papervision3d.core.geom.Lines3D;
	import org.papervision3d.materials.special.LineMaterial;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.render.BasicRenderEngine;
	import org.papervision3d.scenes.Scene3D;
	import org.papervision3d.view.Viewport3D;

	[SWF(width="465", height="465", backgroundColor="0x000000", frameRate="40")]
	public class PV3D_sample02 extends Sprite
	{
		private var container:Sprite;
		private var viewport:Viewport3D;
		private var scene:Scene3D;
		private var camera:Camera3D;
		private var renderer:BasicRenderEngine;
		private var rootNode:DisplayObject3D;
		private const a:Number=20;
		private const m:Number=1;
		private const n:Number=20;

		public function PV3D_sample02()
		{
			container=new Sprite();
			addChild(container);
			container.x=stage.stageWidth/2;
			container.y=stage.stageHeight/2;

			viewport=new Viewport3D(0, 0, true, true);
			scene=new Scene3D();
			camera=new Camera3D();
			renderer=new BasicRenderEngine();
			rootNode=scene.addChild(new DisplayObject3D("rootNode"));
			addEventListener(Event.ENTER_FRAME, onFrame);
			
			addChild(viewport);
			camera.zoom=16;
			camera.focus=100;
			camera.target=DisplayObject3D.ZERO;
			
			var dtime:Number=0;
			var lm:LineMaterial;
			var c:int;
			var xx:Number=a;
			var yy:Number=0;
			var zz:Number=0;
			var xxx:Number;
			var yyy:Number;
			var zzz:Number;
			var line:Lines3D;

			for(var i:Number=0; i <= 12 * Math.PI; i+=0.02)
			{
				xxx=a  * Math.cos(n * i);
				yyy=a  * Math.sin(n * i);
				zzz=a * i;

				lm=new LineMaterial(0xFF0000, 1);
				line=new Lines3D(lm);
				line.addNewLine(0.7, xx, yy, zz, xxx, yyy, zzz);
				rootNode.addChild(line, "line" + i.toString());
				line.scale=0;
				Tweener.addTween(line, {scale:1, time:2, delay:dtime});
				dtime+=0.04;
				c++;
				xx=xxx;
				yy=yyy;
				zz=zzz;
			}
			dtime=dtime/4;
			for(var ii:Number=0; ii <= 12 * Math.PI; ii+=0.02)
			{
				var ll:Lines3D=rootNode.getChildByName("line" + ii.toString()) as Lines3D;
				Tweener.addTween(ll, {scale:-1, time:2, delay:dtime, onComplete:function():void{rootNode.removeChild(ll);}});
				dtime+=0.04;
			}
		}

		public function onFrame(e:Event):void
		{
			rootNode.rotationX+=0.5;
			rootNode.rotationY+=0.5;
			renderer.renderScene(scene, camera, viewport);
		}
	}
}