package { import flare.basic.*; import flare.core.*; import flare.loaders.*; import flare.system.*; import flash.display.*; import flash.events.*; import flash.text.*; /** * @author Ariel Nehmad */ public class Test58_LoadingAndDisposingModels extends Sprite { private var scene:Scene3D; private var current:Flare3DLoader; private var info:TextField; public function Test58_LoadingAndDisposingModels() { scene = new Viewer3D( this ); scene.autoResize = true; scene.camera = new Camera3D(); scene.camera.setPosition( 100, 150, -200 ); scene.camera.lookAt( 0, 0, 0 ); scene.addEventListener( Scene3D.UPDATE_EVENT, updateEvent ); info = new TextField(); info.selectable = false; info.defaultTextFormat = new TextFormat( "tahoma", 18, 0xffffff, true ); info.autoSize = "left"; info.text = "Press 1, 2 or 3 to load each model."; addChild( info ); } private function updateEvent(e:Event):void { if ( Input3D.keyHit( Input3D.NUMBER_1 ) ) loadNewModel( "Vaca", "http://ariel.flare3d.com/zf3d/vaca.zf3d" ); if ( Input3D.keyHit( Input3D.NUMBER_2 ) ) loadNewModel( "Planet", "http://ariel.flare3d.com/zf3d/planet.zf3d" ); if ( Input3D.keyHit( Input3D.NUMBER_3 ) ) loadNewModel( "Chess", "http://ariel.flare3d.com/zf3d/chess.zf3d" ); } private function loadNewModel( name:String, url:String ):void { if ( current ) { current.close(); current.dispose(); } current = new Flare3DLoader( url /*+ "?" + Math.random()*/ ); current.name = name; current.addEventListener( ProgressEvent.PROGRESS, progressEvent ); current.load(); current.parent = scene; info.text = "Loading model: " + current.name; } private function progressEvent(e:ProgressEvent):void { info.text = int( e.bytesLoaded * 100 / e.bytesTotal ).toString() + "% of model: " + current.name; } } }