forked from: 火の玉

by hacker_kscyf0ij
♥0 | Line 47 | Modified 2010-01-29 20:55:51 | MIT License
play

ActionScript3 source code

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

// forked from maccyan's 火の玉
//散り際が気に入ってる
package{
	import flash.display.*;
	import flash.events.*
	import flash.filters.*;
	import flash.geom.*;
	import org.papervision3d.cameras.*;
	import org.papervision3d.core.math.*;
	import org.papervision3d.core.effects.*;
	import org.papervision3d.core.effects.utils.*;
	import org.papervision3d.view.layer.*;
	import org.papervision3d.materials.*;
	import org.papervision3d.materials.utils.*;
	import org.papervision3d.objects.primitives.*;
	import org.papervision3d.render.*;
	import org.papervision3d.scenes.*;
	import org.papervision3d.view.*;
	import org.papervision3d.view.stats.StatsView;
	
	[SWF(width=640,height=480,backgroundColor=0,frameRate=30)]
	public class Fire extends Sprite {
		private var camera:Camera3D = new Camera3D(60,10,2000,true,false);
		private var renderer:BasicRenderEngine = new BasicRenderEngine();
		private var scene:Scene3D = new Scene3D();
		private var viewport:Viewport3D = new Viewport3D();
		
		private var sphere:Sphere;
		public function Fire():void {
			addChild(viewport);
			addChild(new StatsView(renderer));

			var fire = new BitmapEffectLayer(viewport,640,480);
			fire.addEffect(new BitmapLayerEffect(new BlurFilter(5,4,3)));
			fire.addEffect(new BitmapFireEffect(1,0.3,0.3,1));
			fire.drawCommand = new BitmapDrawCommand(null,null,BlendMode.ADD);
			fire.clippingPoint = new Point(0,-7);
			viewport.containerSprite.addLayer(fire);
			
			var material:ColorMaterial = new ColorMaterial(0xFF5555,0.9);
			
			sphere = new Sphere(material,100);
			
			scene.addChild(sphere);
			
			fire.addDisplayObject3D(sphere);
			
			camera.y = -300;
			
			addEventListener(Event.ENTER_FRAME,loop);
		}
		
		private function loop(e:Event):void {
			
			sphere.y -= 7;
			camera.rotationX += 0.11;
			renderer.renderScene(scene,camera,viewport);
		}
	}
}