ぼちぼち
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{ 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); //いろんな3D object を作ってみて、配列に入れておく obj.push(createCube()); //3D object を root node に追加 for(var i:int;i < obj.length;i++){ rootNode.addChild(obj[i]); } } private function createCube():DisplayObject3D{ var material:WireframeMaterial = new WireframeMaterial(); material.oneSide = false; material.lineColor = 0xFF0000; material.lineAlpha = 1; var width:Number = 300; var depth:Number = 300; var height:Number = 300; var __segmentsS:Number = 32; var __segmentsT:Number = 32; var __segmentsH:Number = 32; var cube:Cube = new Cube(material, width, depth, height, __segmentsS, __segmentsT, __segmentsH); cube.x = 0; cube.y = 20; cube.z = -150; return cube; } 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[アリーナ]が出来た?
別 class の方が良いだろうけどどうしたもんか。
mimic28号でした。