Alternativa3D 7 地球を回す
色々なコードをツギハギして、やっと地球を作って回せた。。。
う・うれしい・・・
課題はまだまだたくさんあるけど、うれしい
/**
* Copyright roconico ( http://wonderfl.net/user/roconico )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/1dRB
*/
package {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.system.*;
import alternativ7.engine3d.containers.*;
import alternativ7.engine3d.core.*;
import alternativ7.engine3d.materials.*;
import alternativ7.engine3d.primitives.*;
[SWF(backgroundColor="#000000", frameRate="60", width="465", height="465")]
public class DemoForWonderfl extends Sprite {
private static const CELL_NUM:uint = 1;
public function DemoForWonderfl() {
// swf init
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.quality = StageQuality.LOW;
// load
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
//画像暗い方 ↓
//var url:String = "http://assets.wonderfl.net/images/related_images/a/a5/a537/a5375cef73c462abc59ea9820de114f3f6d18b50";
//画像明るい方 ↓
var url:String = "http://assets.wonderfl.net/images/related_images/3/3a/3a0f/3a0f77d6f7299a76cea0602132210dcfd48560c0";
loader.load(new URLRequest(url), new LoaderContext(true));
}
private var camera:Camera3D;
private var container:DistanceSortContainer;
private var boxes:Array = [];
private var wrap:DistanceSortContainer;
private function completeHandler(e:Event):void {
// Camera
camera = new Camera3D();
camera.view = new View(465, 465);
addChild(camera.view);
//camera.x = 0;
camera.x = 0;
camera.y = 800;
camera.z = 0;
camera.fov = 45;
camera.rotationX = -90 * Math.PI / 180;
camera.rotationZ = 180 * Math.PI / 180;
// Root object
container = new DistanceSortContainer();
container.sortByZ = true;
wrap = new DistanceSortContainer();
wrap.sortByZ = true;
container.addChild(wrap);
// 画像をマテリアルとして貼り付ける
var material:TextureMaterial = new TextureMaterial();
material.texture = e.target.content.bitmapData;
material.mipMapping = MipMapping.NONE;
material.repeat = false;
material.smooth = false;
var mat2:VertexLightMaterial = new VertexLightMaterial();
mat2.texture = e.target.content.bitmapData;
mat2.mipMapping = MipMapping.NONE;
mat2.repeat = false;
mat2.smooth = false;
// 元BOX ;
var box:Box = new Box(140, 140, 140, 1, 1, 1);
box.setMaterialToAllFaces(material);
box.sorting = Sorting.NONE;
//box.x = 100;
//box.y = 100;
//box.z = 100;
//wrap.addChild(box);
// 球 ;
var cle:Sphere = new Sphere(260,50,50,false);
cle.setMaterialToAllFaces(material);
//cle.setMaterialToAllFaces(mat2);
wrap.addChild(cle);
// Adding
container.addChild(camera);
// Debug
addChild(camera.diagram);
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
//stage.addEventListener(Event.RESIZE, resizeHandler);
resizeHandler();
}
private function enterFrameHandler(e:Event = null):void {
/*
for (var i:int = 0; i < boxes.length; i++) {
boxes[ i ].rotationX += 1 * Math.PI / 180;
boxes[ i ].rotationY += 1 * Math.PI / 180;
}
*/
//wrap.rotationX += 1 * Math.PI / 180;
//wrap.rotationY += 1 * Math.PI / 180;
wrap.rotationZ += 0.1 * Math.PI / 180;
camera.render();
}
private function resizeHandler(e:Event = null):void {
camera.view.width = stage.stageWidth;
camera.view.height = stage.stageHeight;
graphics.clear();
graphics.beginFill(0x0);
graphics.drawRect(0,0,stage.stageWidth, stage.stageHeight);
}
}
}