できるだけ単純にAlternativa3D使用実験
あまりよく理解できてないAlternativa3Dなので、
できるだけ単純に動かせないか実験
♥0 |
Line 55 |
Modified 2010-11-05 02:17:42 |
MIT License
archived:2017-03-09 19:55:13
ActionScript3 source code
/**
* Copyright siouxcitizen ( http://wonderfl.net/user/siouxcitizen )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/oTx5
*/
//あまりよく理解できてないAlternativa3Dなので、
//[Alternativa3D] Basic Template
//http://wonderfl.net/c/4XjX
//と
//Alternativa3D demo
//http://wonderfl.net/c/a0T7
//を参考にさせてもらって、できるだけ単純にAlternativa3Dを動かせないか実験。
//onResizeって必ず必要なんかな? ←このへんコピペしただけなのででよくわかってません。。。
package {
import alternativ5.engine3d.controllers.CameraController;
import alternativ5.engine3d.core.Camera3D;
import alternativ5.types.Point3D;
import alternativ5.engine3d.core.Object3D;
import alternativ5.engine3d.core.Scene3D;
import alternativ5.engine3d.display.View;
import alternativ5.engine3d.materials.DevMaterial;
import alternativ5.engine3d.primitives.Plane;
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Matrix;
[SWF(width = 465, height = 465, frameRate = 60)]
public class Main extends Sprite {
private var scene:Scene3D;
private var view:View;
private var camera:Camera3D;
private var cameraController:CameraController;
private var plane:Plane;
public function Main():void {
scene = new Scene3D();
scene.root = new Object3D();
// カメラをセットします
camera = new Camera3D();
camera.z = -1000;
scene.root.addChild(camera);
// カメラコントローラー
cameraController = new CameraController(this);
cameraController.camera = camera;
// ビューをセットします
view = new View();
view.camera = camera;
addChild(view);
// マテリアルを作成します
var material:DevMaterial = new DevMaterial();
// プリミティブを作成します
plane = new Plane(600, 600);
plane.cloneMaterialToAllSurfaces(material);
// 3Dシーンのルートに追加します
scene.root.addChild(plane);
stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
stage.addEventListener(Event.RESIZE, onResize);
onResize(null);
}
private function onEnterFrame(e:Event):void {
// Planeオブジェクトを回転させます (角度はラジアン)
plane.rotationX = mouseX * Math.PI / 180;
plane.rotationY = mouseY * Math.PI / 180;
// カメラの座標を中央に向かせる
cameraController.lookAt(new Point3D());
scene.calculate();
}
private function onResize(event:Event = null):void {
view.width = stage.stageWidth;
view.height = stage.stageHeight;
// BackGround Color
var bgMatrix:Matrix = new Matrix();
bgMatrix.rotate(90 * Math.PI / 180);
graphics.clear()
graphics.beginGradientFill("linear", [0xFFFFFF, 0x001122], [100, 100], [0, 255], bgMatrix);
graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
}
}
}