[練習]
♥0 |
Line 64 |
Modified 2010-08-31 22:11:05 |
MIT License
archived:2017-03-20 12:09:33
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/r5G9
*/
package {
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;
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 plane:Sphere;
private var plane1:Sphere;
private var planeNum:int = 20;
private var planeArr:Array = [];
private var angleX: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();
viewport.interactive = true;
addChild(viewport);
for(var i:int =0; i < planeNum; i++){
var material:ColorMaterial = new ColorMaterial(0xcccccc);
material.doubleSided = true;
material.interactive = true;
plane = new Sphere(material, 6, 2, 2);
plane.y = -planeNum / 2 * 5 + i * 5;
var radian:Number = 360 / planeNum * i * Math.PI / 180;
plane.x = Math.cos(radian) * 30;
plane.z = Math.sin(radian) * 30;
scene.addChild(plane);
// planeArr.push(plane);
// planeArr[i].addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onPlane);
}
addEventListener(Event.ENTER_FRAME, onEnter);
}
// private function onPlane(e:InteractiveScene3DEvent):void{
//event.target.scaleX = 2;
// }
private function onEnter(e:Event):void{
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);
}
}
}