1  /**
     2   * com.sekati.log.ConsoleFPSMonitor
     3   * @version 1.0.5
     4   * @author jason m horwitz | sekati.com
     5   * Copyright (C) 2007  jason m horwitz, Sekat LLC. All Rights Reserved.
     6   * Released under the MIT License: http://www.opensource.org/licenses/mit-license.php
     7   */
     8  
     9  import com.sekati.display.BaseClip;
    10  import com.sekati.log.ConsoleStyle;
    11  import com.sekati.time.FPS;
    12  import com.sekati.utils.Delegate;
    13  
    14  /**
    15   * Console FPSMonitor UI
    16   * {@code Usage:
    17   * var fpsMonitor:MovieClip = ClassUtils.createEmptyMovieClip (com.sekati.log.ConsoleFPSMonitor, this, "consoleFPSMonitor", {_x:750, _y:0});
    18   * }
    19   * @see {@link com.sekati.log.Console}
    20   */
    21  class com.sekati.log.ConsoleFPSMonitor extends BaseClip {
    22  
    23  	private var _fps:FPS;
    24  	private var _cs:ConsoleStyle;
    25  	private var _style:Object;	
    26  	private var _bg:MovieClip;
    27  	private var _currentLabel:TextField;
    28  	private var _averageLabel:TextField;
    29  	private var _currentFps:TextField;
    30  	private var _averageFps:TextField;
    31  
    32  	/**
    33  	 * ConsoleFPSMonitor Constructor.
    34  	 */
    35  	public function ConsoleFPSMonitor() {	
    36  		//trace("ConsoleFPSMonitor: "+_this._name+".__RUID = "+_this.__RUID+";");
    37  		_cs = ConsoleStyle.getInstance( );
    38  		_style = _cs.CSS.console.head.fps;
    39  		
    40  		// draw the bg for toClipboard presses
    41  		_bg = _cs.createStyledRectangle( _this, _style.bg );
    42  		
    43  		// text - createStyledTextField (target:MovieClip, layout:Object, color:Object, str:String)
    44  		_currentLabel = _cs.createStyledTextField( _this, _style.textfields.current_label );
    45  		_averageLabel = _cs.createStyledTextField( _this, _style.textfields.average_label );
    46  		_currentFps = _cs.createStyledTextField( _this, _style.textfields.current_fps );
    47  		_averageFps = _cs.createStyledTextField( _this, _style.textfields.average_fps );
    48  	
    49  		// start monitoring	
    50  		_fps = new FPS( Delegate.create( _this, updateFPS ), _style.updateRate );
    51  
    52  		/*
    53  		// events
    54  		_bg.onPress = Delegate.create(_this, toClipboard);
    55  		_bg.useHandCursor = false;
    56  		 */
    57  	}
    58  
    59  	/**
    60  	 * Update the FPS textfields.
    61  	 * @param current (Number) the current swf's FPS
    62  	 * @param average (Number) the average swf's FPS since inception
    63  	 * @param currentTrend (String) direction is the current fps trending: "+"|"-" 
    64  	 * @param averageTrend (String) direction is the average fps trending: "+"|"-" 
    65  	 */
    66  	private function updateFPS(current:Number, average:Number, currentTrend:String, averageTrend:String):Void {
    67  		var cc:Number = (currentTrend == "+") ? _style.textfields.trend_colors.up : _style.textfields.trend_colors.down;
    68  		var ac:Number = (averageTrend == "+") ? _style.textfields.trend_colors.up : _style.textfields.trend_colors.down;
    69  		_currentFps.htmlText = "<font color='" + cc + "'>" + currentTrend + current + "</font>";
    70  		_averageFps.htmlText = "<font color='" + ac + "'>" + averageTrend + average + "</font>";
    71  	}	
    72  
    73  	/**
    74  	 * Copy FPS string data to clipboard.
    75  	 * @return Void
    76  	 */
    77  	public function toClipboard():Void {
    78  		System.setClipboard( toString( ) );
    79  	}
    80  
    81  	/**
    82  	 * Return FPS string data
    83  	 * @return String
    84  	 */
    85  	public function toString():String {
    86  		var tab:String = "\t";
    87  		var str:String = "FPS:" + tab + _currentLabel.text + ": " + _currentFps.text + tab + _averageLabel.text + ": " + _averageFps.text;	
    88  		return str;
    89  	}
    90  
    91  	/**
    92  	 * calls superclasses BaseClip.destroy and executes its own destroy behaviors.
    93  	 * @return Void
    94  	 */
    95  	public function destroy():Void {
    96  		_fps.destroy( );
    97  		super.destroy( );
    98  	}	
    99  }