package { import flash.display.Sprite; import flash.events.Event; /** * ... * @author JMIM */ public class Main extends Sprite { public var lazyObject:LazyInitClass; public var myArrayContainer:Object = { object: null }; private var counter:int = 0; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point lazyObject = new LazyInitClass( myArrayContainer ); this.addEventListener(Event.ENTER_FRAME, update); } public function update(e:Event):void { lazyObject.update(); counter++; if (counter == 100) { myArrayContainer.object = ["1", "2", "3"]; } } } } internal class LazyInitClass { //if this works, make different kinds of lazy init containers for all the different data types. public var _initialized:Boolean = false; public var theArray:Array = null; public var arrayContainer:Object; public function LazyInitClass( inArrayContainer:Object ) { arrayContainer = inArrayContainer; } public function update():void { if (!_initialized) { trace("checking for non-null references"); theArray = arrayContainer.object; if (theArray != null) { _initialized = true;} } else { trace("initialized!"); } } }
Friday, December 28, 2012
Lazy Initialization
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment