package { import away3d.containers.ObjectContainer3D; import away3d.containers.View3D; import away3d.debug.AwayStats; import away3d.materials.BitmapMaterial; import away3d.primitives.Cube; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; [SWF(frameRate="60", width="720", height="480")] public class MolehillCubesAway3D extends Sprite { //---------------------------------------------------------- // // Static Property // //---------------------------------------------------------- private static const CELL_NUM:uint = 8; //---------------------------------------------------------- // // Constructor // //---------------------------------------------------------- public function MolehillCubesAway3D() { if (stage) addedToStageHanlder(); else addEventListener(Event.ADDED_TO_STAGE, addedToStageHanlder); } //---------------------------------------------------------- // // Property // //---------------------------------------------------------- [Embed(source="/assets/image.png")] // [Embed(source="../embeds/crossColor.jpg")] private var ImageCls:Class; private var container:ObjectContainer3D; private var cubes:Array = []; private var view:View3D; //---------------------------------------------------------- // // Function // //---------------------------------------------------------- private function addedToStageHanlder(event:Event = null):void { view = new View3D(); this.addChild(view); this.addEventListener(Event.ENTER_FRAME, enterFrameHandler); container = new ObjectContainer3D(); view.scene.addChild(container); var material:BitmapMaterial = new BitmapMaterial(new ImageCls().bitmapData); // Box for (var i:int = 0; i < CELL_NUM; i++) { for (var j:int = 0; j < CELL_NUM; j++) { for (var k:int = 0; k < CELL_NUM; k++) { var box:Cube = new Cube(material, 30, 30, 30, 1, 1, 1, false); box.x = 50 * (i - CELL_NUM / 2); box.y = 50 * (j - CELL_NUM / 2); box.z = 50 * (k - CELL_NUM / 2); container.addChild(box); this.cubes.push(box); } } } stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; addChild(new AwayStats(view)); } private function enterFrameHandler(ev:Event):void { for (var i:int = 0; i < cubes.length; i++) { cubes[i].rotationX += 1; cubes[i].rotationY += 1; } container.rotationX += 1; container.rotationY += 1; view.render(); } } }