<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ActionScript 3 Lover &#187; fps</title>
	<atom:link href="http://as3blog.com/tag/fps/feed/" rel="self" type="application/rss+xml" />
	<link>http://as3blog.com</link>
	<description>Focus on ActionScript 3</description>
	<lastBuildDate>Thu, 19 Nov 2009 04:51:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>一个用于检测FPS和内存占用的小玩意</title>
		<link>http://as3blog.com/as3/fps-memory-leak-monitor-of-as3/</link>
		<comments>http://as3blog.com/as3/fps-memory-leak-monitor-of-as3/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 13:44:12 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
				<category><![CDATA[ActionScript3]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[fps]]></category>
		<category><![CDATA[memory leak]]></category>

		<guid isPermaLink="false">http://as3blog.com/as3/a-fps-memory-leak-monitor-of-as3/</guid>
		<description><![CDATA[最近为CPU和内存占用的细节努力不少，自己也折腾出了一个检测器，用于实时检测FPS（实际上可以算是检测CPU）和内存占用情况。
使用方法，在application的Document Class（或者Application Class）上构建一个检测器实例（MonitorKit）并addChild即可，所含参数比较简单，不再一一赘述：
var monitor:MonitorKit = new MonitorKit(MonitorKit.MKMODE_T);
addChild(monitor);

效果图如下：
 
MonitorKit类如下：

package com.as3blog.utils{
  import flash.display.Sprite;
  import flash.display.Stage;
  import flash.events.Event;
  import flash.system.System;
  import flash.text.TextField;
  import flash.text.TextFieldAutoSize;
  import flash.text.TextFormat;
  import flash.utils.getTimer;

  public class MonitorKit extends Sprite{
    public static const MKMODE_T:String = &#34;MKMODE_T&#34;;
    public static const MKMODE_B:String [...]]]></description>
			<content:encoded><![CDATA[<p>最近为CPU和内存占用的细节努力不少，自己也折腾出了一个检测器，用于实时检测FPS（实际上可以算是检测CPU）和内存占用情况。</p>
<p>使用方法，在application的Document Class（或者Application Class）上构建一个检测器实例（MonitorKit）并addChild即可，所含参数比较简单，不再一一赘述：</p>
<blockquote><pre>var monitor:MonitorKit = new MonitorKit(MonitorKit.MKMODE_T);
addChild(monitor);</pre>
</blockquote>
<p>效果图如下：</p>
<p><img src="http://pic.yupoo.com/awflasher/180917456579/futqmw43.jpg" /> </p>
<p>MonitorKit类如下：</p>
<blockquote>
<pre>package com.as3blog.utils{
  import flash.display.Sprite;
  import flash.display.Stage;
  import flash.events.Event;
  import flash.system.System;
  import flash.text.TextField;
  import flash.text.TextFieldAutoSize;
  import flash.text.TextFormat;
  import flash.utils.getTimer;

  public class MonitorKit extends Sprite{
    public static const MKMODE_T:String = &quot;MKMODE_T&quot;;
    public static const MKMODE_B:String = &quot;MKMODE_B&quot;;
    public static const MKMODE_L:String = &quot;MKMODE_L&quot;;
    public static const MKMODE_R:String = &quot;MKMODE_R&quot;;
    public static const MKMODE_TL:String = &quot;MKMODE_TL&quot;;
    public static const MKMODE_TR:String = &quot;MKMODE_TR&quot;;
    public static const MKMODE_BL:String = &quot;MKMODE_BL&quot;;
    public static const MKMODE_BR:String = &quot;MKMODE_BR&quot;;

    private static var stageInstance:Stage;

    private var lastTime:uint = getTimer();
    private var frames:Number = 0;
    private var monitorKitTextField:TextField;
    private var mode:String;
    private var textColor:uint;
    private var backgroundColor:uint;
    private var transparent:Boolean;
    public static var delay:Number = 0;
    public function MonitorKit(_mode:String = MKMODE_T,
        _transparent:Boolean = true,
        _textColor:uint=0xffffff,
        _backgroundColor:uint=0x000000) {
      mode = _mode;
      transparent = _transparent;
      textColor = _textColor;
      backgroundColor = _backgroundColor;
      // Initialize it when rendered on the stage.
      addEventListener(Event.ADDED_TO_STAGE, initMonitorHandler);
    }

    private function initMonitorHandler(event:Event):void {
      // Unregister the event handler
      removeEventListener(Event.ADDED_TO_STAGE, initMonitorHandler);
      stageInstance = this.stage;
      monitorKitTextField = new TextField();
      monitorKitTextField.selectable = false;
      monitorKitTextField.background = transparent;
      monitorKitTextField.textColor = textColor;
      monitorKitTextField.backgroundColor = backgroundColor;
      monitorKitTextField.autoSize = TextFieldAutoSize.LEFT;
      var format:TextFormat = new TextFormat();
      format.font = &quot;Courier New&quot;;
      format.size = 15;
      monitorKitTextField.setTextFormat(format);
      monitorKitTextField.defaultTextFormat = format;
      monitorKitTextField.text = &quot;[ Loading... ]&quot;;
      addChild(monitorKitTextField);
      stageInstance.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
    }

    public function enterFrameHandler(evt:Event):void {
      frames++;
      var currentTime:uint = getTimer();
      var deltaTime:uint = currentTime - lastTime;
      var fps:Number = frames / deltaTime * 1000;
      monitorKitTextField.text = &quot;FPS: &quot; + fps.toFixed(1);
      monitorKitTextField.appendText(&quot;\nMem: &quot; + Number(System.totalMemory/1024/1024).toFixed(3)+&quot;(M)&quot;);
      frames = 0;
      lastTime = currentTime;
      // Replace the monitor object
      switch (mode) {
        case MKMODE_T:
          monitorKitTextField.x = stageInstance.stageWidth / 2 - monitorKitTextField.width / 2;
          monitorKitTextField.y = 0;
          break;
        case MKMODE_B:
          monitorKitTextField.x = stageInstance.stageWidth / 2 - monitorKitTextField.width / 2;
          monitorKitTextField.y = stageInstance.stageHeight - monitorKitTextField.height;
          break;
        case MKMODE_L:
          monitorKitTextField.x = 0;
          monitorKitTextField.y = stageInstance.stageHeight / 2 - monitorKitTextField.height / 2;
          break;
        case MKMODE_R:
          monitorKitTextField.x = stageInstance.stageWidth - monitorKitTextField.width;
          monitorKitTextField.y = stageInstance.stageHeight / 2 - monitorKitTextField.height / 2;
          break;
        case MKMODE_TL:
          monitorKitTextField.x = 0;
          monitorKitTextField.y = 0;
          break;
        case MKMODE_TR:
          monitorKitTextField.x = stageInstance.stageWidth - monitorKitTextField.width;
          monitorKitTextField.y = 0;
          break;
        case MKMODE_BL:
          monitorKitTextField.x = 0;
          monitorKitTextField.y = stageInstance.stageHeight - monitorKitTextField.height;
          break;
        case MKMODE_BR:
          monitorKitTextField.x = stageInstance.stageWidth - monitorKitTextField.width;
          monitorKitTextField.y = stageInstance.stageHeight - monitorKitTextField.height;
          break;
        default:
        break;
      }
    }
  }
}</pre>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/as3/fps-memory-leak-monitor-of-as3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

