Flash: View Controller binding

by troy on July 18, 2008

When using actionscript to turn a MovieClip , Sprite etc into a component. There are several points that can be used to introspect the children to bind the displayObject, whatever configuration is on stage, with the ActionScript class. Different binding points allow different things, here's the order and

OUTPUT:

  • constructor: // displayObject children are already on stage in the displayList but haven' t been drawn yet. the Actionscript class for it is just getting instantiated.
  • onFrame1: // actionscript on or associated with frame1 has fired
  • activateHandler: //not always called
  • onFirstFrameRender: //first time ENTER_FRAME has hit the frame1, meaning it's script has fired, and everything is already visible.
  • renderHandler: //only if the stage.invalidate() is called.
package {
 
 import flash.display.MovieClip;
 
    import flash.display.Sprite;
 
    import flash.display.StageAlign;
 
    import flash.display.StageScaleMode;
 
    import flash.events.Event;
 
 import flash.text.TextField;
 
public class StageExample extends MovieClip {
 
public var sizeMe:MovieClip;
 
 	public var output_txt:TextField;
 
 	public var textLog:Array = new Array();
 
public function StageExample() {
 
 		super();
 
            stage.scaleMode = StageScaleMode.NO_SCALE;
 
            stage.align = StageAlign.TOP_LEFT;
 
stage.addEventListener(Event.ACTIVATE, activateHandler);
 
            stage.addEventListener(Event.RESIZE, resizeHandler);
 
addEventListener(Event.ENTER_FRAME, onFirstFrameRender);
 
 		addEventListener(Event.RENDER, renderHandler);
 
addToLog("constructor: w " + stage.stageWidth + " h " + stage.stageHeight);
 
 		addFrameScript(0, onFrame1);
 
 		stage.invalidate();
 
}
 
        private function onFrame1():void {
 
addToLog("onFrame1: w " + stage.stageWidth + " h " + stage.stageHeight);
 
 		//resizeHandler(event);
 
        }
 
 	private function activateHandler(event:Event):void {
 
            trace("onFirstFrameRender: " + event);
 
 		addToLog("activateHandler: w " + stage.stageWidth + " h " + stage.stageHeight);
 
 		//resizeHandler(event);
 
        }
 
private function onFirstFrameRender(event:Event):void {
 
            trace("onFirstFrameRender: " + event);
 
 		addToLog("onFirstFrameRender: w " + stage.stageWidth + " h " + stage.stageHeight);
 
 	//	resizeHandler(event);
 
 		removeEventListener(Event.ENTER_FRAME, onFirstFrameRender);
 
        }
 
 	private function renderHandler(event:Event):void {
 
        trace("renderHandler: " + event);
 
 	addToLog("renderHandler: w " + stage.stageWidth + " h " + stage.stageHeight);
 
    }
 
 ///////////////////////////////////////////////////////////////////
 
private function resizeHandler(event:Event):void {
 
            trace("resizeHandler: " + event);
 
            trace("stageWidth: " + stage.stageWidth + " stageHeight: " + stage.stageHeight);
 
addToLog("resize: w " + stage.stageWidth + " h " + stage.stageHeight);
 
 		sizeMe.width = stage.stageWidth;
 
 		sizeMe.height = stage.stageHeight;
 
        }
 
 	private function addToLog(str:String):void
 
 	{
 
 		textLog.unshift(str);
 
 		output_txt.text = textLog.join("\r");
 
 	}
 
    }
 
}

Leave a Comment

Previous post:

Next post: