package starling_integration.example2 { import flare.basic.*; import flare.core.*; import flare.primitives.*; import flash.display.*; import flash.display3D.*; import flash.events.*; import starling.core.*; [SWF(width = 550, height = 350, frameRate = 60)] /** * Flare3D + Starling integration. * * @author Ariel Nehmad */ public class StarlingTest extends Sprite { [Embed(source = "vaca.zf3d", mimeType = "application/octet-stream")] private var Model:Class; private var scene:Scene3D; private var model:Pivot3D; private var starlingTop:Starling; private var cube:Cube; public function StarlingTest() { scene = new Viewer3D( this ); scene.autoResize = true; scene.clearColor.setTo( 1, 1, 1 ); scene.addEventListener( Event.CONTEXT3D_CREATE, contextCreateEvent ); scene.addEventListener( Scene3D.RENDER_EVENT, renderEvent ); cube = new Cube( "cube", 40, 40, 40 ); cube.upload( scene ); model = scene.addChildFromFile( new Model ); } private function contextCreateEvent(e:Event):void { starlingTop = new Starling( StarlingTop, stage, null, stage.stage3Ds[ scene.stageIndex ] ); starlingTop.start(); } private function renderEvent(e:Event):void { // prevents the 3d scene to render. // we'll handle the render by our own. e.preventDefault(); // render 3D scene. scene.render(); // draw starling ui. starlingTop.nextFrame(); // clear the depth if you want the objects to be always in front of the 2D starling layer. scene.context.clear( 0, 0, 0, 1, 1, 0, Context3DClearMask.DEPTH ); cube.draw(); } } }