ほどほど
CubeFight.as
package{ import flash.events.*; import flash.display.*; import org.papervision3d.scenes.*; import org.papervision3d.objects.*; import org.papervision3d.cameras.*; import org.papervision3d.materials.*; public class CubeFight extends Sprite{ public var arena : Arena; private var container : Sprite; private var scene : Scene3D; private var camera : Camera3D; private var rootNode : DisplayObject3D; private var obj : Array = new Array(); public function CubeFight():void{ stage.frameRate = 60; //画面いっぱいに表示(縦横比無視)したいときは下記を使う //stage.scaleMode = StageScaleMode.EXACT_FIT; //resize に対応(swf を browser で直接ひらいているときとか) stage.addEventListener(Event.RESIZE, onStageResize); //定期的に event 発生 addEventListener(Event.ENTER_FRAME, myLoopEvent); //表示用の sprite object を生成 container = new Sprite(); container.x = 400 / 2; //at center : swf width = 400 container.y = 400 / 2; //at center : swf height = 400 addChild(container); //scene object を作る scene = new Scene3D(container); //camera object を作る camera = new Camera3D(); camera.z = -200; camera.focus = 500; camera.zoom = 1; //root node を作る rootNode = new DisplayObject3D(); scene.addChild(rootNode); arena = new Arena(); //いろんな3D object を作ってみて、配列に入れておく obj.push(arena.createArena()); //3D object を root node に追加 for(var i:int;i < obj.length;i++){ rootNode.addChild(obj[i]); } } private function myLoopEvent(event:Event):void{ scene.renderCamera(camera); } private function onStageResize(event:Event):void{ container.x = stage.stageWidth / 2; container.y = stage.stageHeight / 2; } } }
Arena.as
package{ import org.papervision3d.scenes.*; import org.papervision3d.objects.*; import org.papervision3d.cameras.*; import org.papervision3d.materials.*; public class Arena{ public function Arena():void{ } private function base( oneSide:Boolean = false ,lineColor:uint = 0xFF0000 ,lineAlpha:uint = 1 ,width:Number = 300 ,depth:Number = 300 ,height:Number = 300 ,__segmentsS:Number = 32 ,__segmentsT:Number = 32 ,__segmentsH:Number = 32 ,x:Number = 0 ,y:Number = 20 ,z:Number = -150 ):DisplayObject3D{ var material:WireframeMaterial = new WireframeMaterial(); material.oneSide = oneSide; material.lineColor = lineColor; material.lineAlpha = lineAlpha; var arena:Cube = new Cube(material, width, depth, height, __segmentsS, __segmentsT, __segmentsH); arena.x = x; arena.y = y; arena.z = z; return arena; } public function createArena():DisplayObject3D{ return this.base(); } } }
良い分け方かは、分からないが、一応分けた。
mimic28号でした。