flash on 2010-9-5
♥0 |
Line 77 |
Modified 2010-09-06 00:36:50 |
MIT License
archived:2017-03-20 12:09:17
ActionScript3 source code
/**
* Copyright Tamanegi_kenshi ( http://wonderfl.net/user/Tamanegi_kenshi )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/4vnx
*/
// forked from Tamanegi_kenshi's [練習]
package {
import flash.filters.BlurFilter;
import flash.display.BlendMode;
import flash.filters.GlowFilter;
import flash.display.AVM1Movie;
import flash.media.Camera;
import flash.text.TextField;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.DisplayObject;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.events.InteractiveScene3DEvent;
import caurina.transitions.Tweener;
[SWF(backgroundColor = 0x000000)]
public class FlashTest extends Sprite {
private var mc:MovieClip;
private var camera:Camera3D;
private var scene:Scene3D;
private var viewport:Viewport3D;
private var renderer:BasicRenderEngine;
private var plane1:Sphere;
private var planeNum:int = 20;
private var planeArr:Array = [];
private var angleX:int = 0;
private var num:int = 0;
public function FlashTest() {
init();
}//FlashTest
private function init():void{
camera = new Camera3D();
scene = new Scene3D();
viewport = new Viewport3D(465, 465);
renderer = new BasicRenderEngine();
camera.z = 0;
viewport.interactive = true;
addChild(viewport);
for(var i:int = 0; i < 500; i++){
var plane:Sphere = new Sphere(null, Math.random() * 5, 5, 5);
var radian:Number = 360 / 25 * i * Math.PI / 180;
plane.x = Math.cos(radian) * 300;
plane.y = Math.sin(radian) * 300;
plane.z = i * 200;
// plane.filters = [new GlowFilter(0xffff00, 1, 5, 5), new BlurFilter(5, 5, 1)];
scene.addChild(plane);
planeArr.push(plane);
}
addEventListener(Event.ENTER_FRAME, onEnter);
}
// private function onPlane(e:InteractiveScene3DEvent):void{
//event.target.scaleX = 2;
// }
private function onEnter(e:Event):void{
// camera.rotationY += 2;
// camera.rotationZ -= 1;
// camera.rotationX += 1;
var dx:Number = planeArr[num].x - camera.x;
var dy:Number = planeArr[num].y - camera.y;
var dz:Number = planeArr[num].z - camera.z;
var angleY:Number = Math.atan2(dz, dx);
camera.rotationY = angleY * 180 / Math.PI;
var angleX:Number = Math.atan2(dy, dz);
camera.rotationX = angleX * 180 / Math.PI;
var angleZ:Number = Math.atan2(dx, dy);
camera.rotationZ = angleZ * 180 / Math.PI;
var vx:Number = (planeArr[num].x - camera.x) * 0.001;
var vy:Number = (planeArr[num].y - camera.y) * 0.001;
var vz:Number = (planeArr[num].z - camera.z) * 0.001;
camera.x += vx;
camera.y += vy;
camera.z += vz;
if(camera.x < planeArr[num].x - 0.01 || camera.x > planeArr[num].x - 0.01){
num++
}
// camera.rotationX = (232 - mouseY) * 0.1;
// angleX += (232 - mouseX) * 0.05;
// var radian:Number = angleX * Math.PI / 180;
//// camera.x = Math.cos(radian) * 500;
// camera.z = Math.sin(radian) * 500;
//
// var dz:Number = 0 - camera.z;
// var dx:Number = 0 - camera.x;
// var angl:Number = Math.atan2(dx, dz);
// camera.rotationY = angl * 180 / Math.PI;
renderer.renderScene(scene, camera, viewport);
}
}
}