`
柴秉承
  • 浏览: 87335 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

starling 中使用的stats类

阅读更多

建立相应的目录 放进去即可
/**
 * stats.as
 * https://github.com/mrdoob/Hi-ReS-Stats
 * 
 * Released under MIT license:
 * http://www.opensource.org/licenses/mit-license.php
 *
 * How to use:
 * 
 *	addChild( new Stats() );
 *
 **/

package net.hires.debug {
	
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Matrix;
	import flash.geom.Rectangle;
	import flash.system.System;
	import flash.text.StyleSheet;
	import flash.text.TextField;
	import flash.utils.getTimer;	

	public class Stats extends Sprite {	

		protected const WIDTH : uint = 70;
		protected const HEIGHT : uint = 100;

		protected var xml : XML;

		protected var text : TextField;
		protected var style : StyleSheet;

		protected var timer : uint;
		protected var fps : uint;
		protected var ms : uint;
		protected var ms_prev : uint;
		protected var mem : Number;
		protected var mem_max : Number;

		protected var graph : BitmapData;
		protected var rectangle : Rectangle;

		protected var fps_graph : uint;
		protected var mem_graph : uint;
		protected var mem_max_graph : uint;

		protected var colors : Colors = new Colors();

		/**
		 * <b>Stats</b> FPS, MS and MEM, all in one.
		 */
		public function Stats() : void {
			
			mem_max = 0;

			xml = <xml><fps>FPS:</fps><ms>MS:</ms><mem>MEM:</mem><memMax>MAX:</memMax></xml>;
		
			style = new StyleSheet();
			style.setStyle('xml', {fontSize:'9px', fontFamily:'_sans', leading:'-2px'});
			style.setStyle('fps', {color: hex2css(colors.fps)});
			style.setStyle('ms', {color: hex2css(colors.ms)});
			style.setStyle('mem', {color: hex2css(colors.mem)});
			style.setStyle('memMax', {color: hex2css(colors.memmax)});
			
			text = new TextField();
			text.width = WIDTH;
			text.height = 50;
			text.styleSheet = style;
			text.condenseWhite = true;
			text.selectable = false;
			text.mouseEnabled = false;
			
			rectangle = new Rectangle(WIDTH - 1, 0, 1, HEIGHT - 50);			
			
			addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);
			addEventListener(Event.REMOVED_FROM_STAGE, destroy, false, 0, true);
			
		}

		private function init(e : Event) : void {
			
			graphics.beginFill(colors.bg);
			graphics.drawRect(0, 0, WIDTH, HEIGHT);
			graphics.endFill();

			addChild(text);
			
			graph = new BitmapData(WIDTH, HEIGHT - 50, false, colors.bg);
			graphics.beginBitmapFill(graph, new Matrix(1, 0, 0, 1, 0, 50));
			graphics.drawRect(0, 50, WIDTH, HEIGHT - 50);
			
			addEventListener(MouseEvent.CLICK, onClick);
			addEventListener(Event.ENTER_FRAME, update);
			
		}

		private function destroy(e : Event) : void {
			
			graphics.clear();
			
			while(numChildren > 0)
				removeChildAt(0);			
			
			graph.dispose();
			
			removeEventListener(MouseEvent.CLICK, onClick);
			removeEventListener(Event.ENTER_FRAME, update);
			
		}

		private function update(e : Event) : void {
			
			timer = getTimer();
			
			if( timer - 1000 > ms_prev ) {
				
				ms_prev = timer;
				mem = Number((System.totalMemory * 0.000000954).toFixed(3));
				mem_max = mem_max > mem ? mem_max : mem;
				
				fps_graph = Math.min(graph.height, ( fps / stage.frameRate ) * graph.height);
				mem_graph = Math.min(graph.height, Math.sqrt(Math.sqrt(mem * 5000))) - 2;
				mem_max_graph = Math.min(graph.height, Math.sqrt(Math.sqrt(mem_max * 5000))) - 2;
				
				graph.scroll(-1, 0);
				
				graph.fillRect(rectangle, colors.bg);
				graph.setPixel(graph.width - 1, graph.height - fps_graph, colors.fps);
				graph.setPixel(graph.width - 1, graph.height - ( ( timer - ms ) >> 1 ), colors.ms);
				graph.setPixel(graph.width - 1, graph.height - mem_graph, colors.mem);
				graph.setPixel(graph.width - 1, graph.height - mem_max_graph, colors.memmax);
				
				xml.fps = "FPS: " + fps + " / " + stage.frameRate; 
				xml.mem = "MEM: " + mem;
				xml.memMax = "MAX: " + mem_max;			
				
				fps = 0;
				
			}

			fps++;
			
			xml.ms = "MS: " + (timer - ms);
			ms = timer;
			
			text.htmlText = xml;
		}

		private function onClick(e : MouseEvent) : void {
			
			mouseY / height > .5 ? stage.frameRate-- : stage.frameRate++;
			xml.fps = "FPS: " + fps + " / " + stage.frameRate;  
			text.htmlText = xml;
			
		}

		// .. Utils

		private function hex2css( color : int ) : String {
			
			return "#" + color.toString(16);
			
		}
		
	}
	
}

class Colors {

	public var bg : uint = 0x000033;
	public var fps : uint = 0xffff00;
	public var ms : uint = 0x00ff00;
	public var mem : uint = 0x00ffff;
	public var memmax : uint = 0xff0070;
	
}
 
分享到:
评论

相关推荐

    starling中文API

    "Starling中文API"是针对这个框架的中文文档,帮助开发者理解和使用Starling的各项功能。 API(Application Programming Interface)是一组预先定义的函数、类、对象和协议,用于构建软件应用。Starling中文API1.2....

    AS3游戏引擎Starling中文手册 Starling入门

    Starling提供了一套简化的API,使得Flash和Flex的开发人员可以较为容易地在他们的项目中使用GPU加速功能。Starling主要面向游戏开发,但也可以应用于其他需要高性能2D图形的场景,如创建UI组件。 Starling框架的...

    as3 starling 中文api

    Starling采用Simplified BSD许可证发布,这意味着它是完全免费的,并且可以在商业项目中使用。此外,Starling拥有一个活跃的开发者社区,社区成员积极贡献代码和插件,共同推动框架的发展和完善。 #### 三、...

    starling使用范例

    本示例主要讲解如何使用Starling进行基本的编程实践,包括创建舞台、添加图像、处理动画以及交互事件。 首先,让我们了解Starling的核心概念。`StarlingStage`是框架的入口点,它类似于AS3中的`stage`对象,但它是...

    Starling中文帮助手册

    - **显示列表**:Starling使用类似于传统Flash的显示列表结构来组织和管理场景中的元素。 - **优化策略**:根据不同的渲染模式采取相应的优化措施,确保性能表现。 ##### 3.2 构建场景 - **构建流程**:Starling...

    air starling 图片旋转

    在Starling中,我们通常使用`Sprite`来承载图片(`Texture`),并可以对`Sprite`进行旋转操作。`Sprite`有一个名为`rotation`的属性,通过改变这个属性的值,我们可以让图片绕着它的中心点旋转。 例如,如果要将一...

    starling 任意形状遮罩

    Starling 任意形状遮罩是一种在AS3(ActionScript 3)环境中,使用Starling框架实现的高级图形处理技术。Starling是一个针对Adobe Flash Player和Adobe AIR的2D游戏开发框架,它允许开发者利用硬件加速来提升游戏...

    starling版消灭星星

    Starling与Flash的Sound和SoundChannel类集成,使得在游戏中播放背景音乐和音效变得简单。在"消灭星星"中,每次消除星星可能都会伴随特定的音效,这些都可能通过Starling进行管理和播放。 总结起来,"Starling版...

    adobe starling as3 flash 3d Starling演讲PPT以及附件

    比如绘制一个图形,在传统Stage中使用绘图API可能只需要几行代码,而Stage3D实现同样的图形显示却需要几十行或上百行代码 Starling的英文原意是叫做“八哥”的小鸟。 不过在Flash领域,Starling是一个ActionScript...

    starling写的塔防类小游戏

    在Starling中,我们可以使用DisplayObject容器来组织游戏场景,每个炮塔、敌人或路径节点都可以是一个DisplayObject实例。 三、游戏对象创建 1. 炮塔:炮塔是玩家的主要防御手段,我们需要定义其属性(如攻击范围、...

    AS3 Starling 中文基础教程

    22. **在 Starling 中使用 Box2D 作为插件**:Box2D 是一个流行的物理引擎,可以与 **Starling** 结合使用,以实现更真实的物理效果。 23. **在 Starling 中进行概要分析**:提供了工具和方法来分析应用程序的性能...

    框架starling

    1. **硬件加速**:Starling通过使用Stage3D API实现了硬件加速,这使得开发者能够在2D图形处理中充分利用现代GPU的能力,提高渲染速度和帧率,尤其是在处理大量动态图形时。 2. **简单API**:尽管Stage3D底层API...

    Starling框架中文教程

    - **FlatSprites和MovieClip**:这两个类在Starling中扮演了重要的角色,它们用于构建复杂的游戏场景。 - **TextureAtlas和Juggler**:纹理集管理和对象池是Starling优化资源管理的关键部分。 - **Button和...

    基于starling的游戏

    由于其高效性和易用性,Starling框架在HTML5时代仍受到许多开发者青睐,尤其是在创建hungryhero这类游戏时。 一、Starling框架的核心特性 1. **硬件加速**:Starling利用Stage3D API实现硬件加速,显著提升了2D...

    Starling1.5.1

    标题中的"Starling1.5.1"指的是这个压缩包中包含的是Starling框架的1.5.1版本。 在描述中提到,这个压缩包包含了Starling的源码和示例项目,这意味着开发者可以深入研究其内部工作原理,了解如何优化性能,并根据...

    Starling开发的游戏

    《Starling开发的游戏》 ...无论是初学者还是经验丰富的开发者,都可以从Starling中受益,并将其应用到自己的项目中。通过深入研究和实践,我们可以不断提升自己的游戏开发技能,创作出更多引人入胜的作品。

    starling.swc

    1. "library.swf" - 这是Starling框架的运行时库,包含了所有必要的类和资源,当SWC文件被导入到项目中时,这个SWF文件会被链接到项目中,使得Starling的功能可以在运行时被调用。 2. "catalog.xml" - 这是SWC文件的...

    Starling Feathers:Starling专属UI框架

    Starling本身是一个跨平台的游戏开发框架,基于ActionScript 3.0,利用硬件加速来实现高效的2D图形渲染,尤其适合在移动设备上使用。Feathers的出现弥补了Starling在UI组件上的不足,提供了丰富的控件和布局选项,...

    Starling Graphics extension 绘图API 扩展

    在使用"Starling-Extension-Graphics-master"压缩包时,你将找到源代码和文档。源代码包含了扩展的类库,可以直接导入到你的Starling项目中。文档则提供了详细的API参考和使用示例,帮助你快速理解和掌握这些功能。 ...

    Starling9宫格类库

    Starling9宫格类库是针对Adobe Starling框架的一个扩展,专门用于实现图像的9宫格缩放功能。在游戏开发或UI设计中,9宫格缩放是一种常见的...通过实践和调试,你将能够熟练掌握如何在自己的应用中使用9宫格缩放技术。

Global site tag (gtag.js) - Google Analytics