stats.js随时查看fps
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
- <title>Document</title>
- <script type="text/javascript" src="./libs/stats.js"></script>
- </head>
- <body>
- <div id="Stats-output">
- </div>
- <script type="text/javascript">
- var stats = initStats();
- function initStats() {
- var stats = new Stats();
- stats.setMode(0); // 0: fps, 1: ms
- // Align top-left
- stats.domElement.style.position = 'absolute';
- stats.domElement.style.left = '0px';
- stats.domElement.style.top = '0px';
- document.getElementById("Stats-output").appendChild(stats.domElement);
- return stats;
- }
- setInterval(function(){
- stats.update();
- },500);
- </script>
- </body>
- </html>
源码:
- /**
- * @author mrdoob / http://mrdoob.com/
- */
- var Stats = function () {
- var startTime = Date.now(), prevTime = startTime;
- var ms = , msMin = Infinity, msMax = ;
- var fps = , fpsMin = Infinity, fpsMax = ;
- var frames = , mode = ;
- var container = document.createElement( 'div' );
- container.id = 'stats';
- container.addEventListener( 'mousedown', function ( event ) { event.preventDefault(); setMode( ++ mode % ) }, false );
- container.style.cssText = 'width:80px;opacity:0.9;cursor:pointer';
- var fpsDiv = document.createElement( 'div' );
- fpsDiv.id = 'fps';
- fpsDiv.style.cssText = 'padding:0 0 3px 3px;text-align:left;background-color:#002';
- container.appendChild( fpsDiv );
- var fpsText = document.createElement( 'div' );
- fpsText.id = 'fpsText';
- fpsText.style.cssText = 'color:#0ff;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px';
- fpsText.innerHTML = 'FPS';
- fpsDiv.appendChild( fpsText );
- var fpsGraph = document.createElement( 'div' );
- fpsGraph.id = 'fpsGraph';
- fpsGraph.style.cssText = 'position:relative;width:74px;height:30px;background-color:#0ff';
- fpsDiv.appendChild( fpsGraph );
- while ( fpsGraph.children.length < ) {
- var bar = document.createElement( 'span' );
- bar.style.cssText = 'width:1px;height:30px;float:left;background-color:#113';
- fpsGraph.appendChild( bar );
- }
- var msDiv = document.createElement( 'div' );
- msDiv.id = 'ms';
- msDiv.style.cssText = 'padding:0 0 3px 3px;text-align:left;background-color:#020;display:none';
- container.appendChild( msDiv );
- var msText = document.createElement( 'div' );
- msText.id = 'msText';
- msText.style.cssText = 'color:#0f0;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px';
- msText.innerHTML = 'MS';
- msDiv.appendChild( msText );
- var msGraph = document.createElement( 'div' );
- msGraph.id = 'msGraph';
- msGraph.style.cssText = 'position:relative;width:74px;height:30px;background-color:#0f0';
- msDiv.appendChild( msGraph );
- while ( msGraph.children.length < ) {
- var bar = document.createElement( 'span' );
- bar.style.cssText = 'width:1px;height:30px;float:left;background-color:#131';
- msGraph.appendChild( bar );
- }
- var setMode = function ( value ) {
- mode = value;
- switch ( mode ) {
- case :
- fpsDiv.style.display = 'block';
- msDiv.style.display = 'none';
- break;
- case :
- fpsDiv.style.display = 'none';
- msDiv.style.display = 'block';
- break;
- }
- }
- var updateGraph = function ( dom, value ) {
- var child = dom.appendChild( dom.firstChild );
- child.style.height = value + 'px';
- }
- return {
- REVISION: ,
- domElement: container,
- setMode: setMode,
- begin: function () {
- startTime = Date.now();
- },
- end: function () {
- var time = Date.now();
- ms = time - startTime;
- msMin = Math.min( msMin, ms );
- msMax = Math.max( msMax, ms );
- msText.textContent = ms + ' MS (' + msMin + '-' + msMax + ')';
- updateGraph( msGraph, Math.min( , - ( ms / ) * ) );
- frames ++;
- if ( time > prevTime + ) {
- fps = Math.round( ( frames * ) / ( time - prevTime ) );
- fpsMin = Math.min( fpsMin, fps );
- fpsMax = Math.max( fpsMax, fps );
- fpsText.textContent = fps + ' FPS (' + fpsMin + '-' + fpsMax + ')';
- updateGraph( fpsGraph, Math.min( , - ( fps / ) * ) );
- prevTime = time;
- frames = ;
- }
- return time;
- },
- update: function () {
- startTime = this.end();
- }
- }
- };
stats.js随时查看fps的更多相关文章
- 微信小程序tips集合:无法输入文字/随时查看页面/元素审查/点击事件/数据绑定
1:编辑文档无法输入文字 出现这种情况一般是因为之前编辑的文档未保存,所有在其他文档输入的时候会自动输入到未保存的文档中,在文档暂时编辑完毕后要ctrl+s随手保存,不然会出现无法打字情况 2: 随时 ...
- dat.gui stats.js 通用参数配置及图像统计工具
在网上看到了一个非常好的JS烟雾效果 https://paveldogreat.github.io/WebGL-Fluid-Simulation/看源码时发现了dat.gui很好用. dat.gui ...
- 谷歌浏览器插件-html页面js事件查看器
谷歌浏览器插件-html页面js事件查看器 1.下载 下载地址:http://files.cnblogs.com/files/graceup/VisualEvent.zip 解压得到文件:Visual ...
- iOS小Tip之查看FPS
可能大家有的时候会想要查看app在运行时的帧率能否达到60帧,如果达不到的话,你可能会想着去优化动画或者其它任何会影响显示性能的问题. 但是,你首先要观察到你的FPS,对吧? 我告诉大家一个简单的方法 ...
- 【jQuery小实例】js 插件 查看图片
---本系列文章所用使用js均可在本博客文件中找到. 像淘宝一样,鼠标放在某一件商品上,展示大图信息,甚至查看图片的具体部位.给人超炫的效果,这种效果实现基于js文件和js插件.大致可以分为三步,添加 ...
- 使用PDF.JS在线查看PDF
过程简单粗暴. 第一步:下载源码https://github.com/mozilla/pdf.js 第二步:将源码拷贝进项目中,可以新建一个PDFShow文件夹存放代码 第三步:修改viewer.js ...
- JS:指定FPS帧频,requestAnimationFrame播放动画
Flash制作动画,最基础的概念就是帧,但在Flash中,帧频的控制比较简单,只需要编译前指定一下目标帧频就可以了. 实际运行时,不需要我们关心定时器的问题,flash player会定时触发Ente ...
- viewer.js图片查看器插件(可缩放/旋转/切换)
<!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- js通过查看屏幕大小,更改其他css属性
首先,我们要知道如何得到屏幕的相关数据. <html><head><title>获取当前对象大小以及屏幕分辨率等</title><body> ...
随机推荐
- cocos代码研究(7)即时动作子类学习笔记
理论部分 即时动作是会立即被执行的动作.他们没有持续时间动作(ActionInterval)的持续时间属性.继承自 FiniteTimeAction.被 CallFunc, FlipX, FlipY, ...
- #C++初学记录(算法3)
C - 不要62 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer). 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司 ...
- [转]Mac Appium环境安装
原文:https://blog.csdn.net/dongqiushan/article/details/53326518 1.安装JDK; 2.安装Android SDK; 3.安装brew; 4. ...
- python 命令执行文件传递参数
import os,sys for root,dirs,files in os.walk(sys.argv[1]): for name in files: print(os.path.join(roo ...
- 使用IDEA 搭建SpringMVC +Easyui 实现最简单的数据展示功能
效果图如下: 步骤如下: 1.导入jquery-easyui-1.5.5.6 2.导入相关的SpringMVC 的jar 包 3.编写datagrid.jsp 页面 <%-- Created b ...
- 应用程序无法正常启动0xc000007b怎么解决
解决方法两种: 1. 网上搜索中最常见的,缺少DirectX 9 ,去下载一个安上就OK了. 2.第二种情况比较操蛋,其实报的错误应该是:mfc100u.dll丢失 .我在两台电脑上装了相同系统后,台 ...
- iOS之第三方库以及XCode插件介绍
前言 第三方库是现在的程序员离不开的东西 不光是APP开发 基本上所有的商业项目 都会或多或少的使用到第三方库 Github上Star>100的开源库数量如下 可以看到JS以绝对的优势排名第一 ...
- 泛型编程之特性(traits)
特性(traits):对于某种可能会出错的返回值型别(Return Type),利用类模版进行部分特例化.其思想类似设计模式. 我们只能部分特例化类模板,而不能部分特例化函数模版.——<C++ ...
- # 20145106 《Java程序设计》第6周学习总结
教材学习内容总结 来源和目的都不知道的情况下还是可以撰写程序的,有这类需求的时候,可以设计一个通用的dump()方法.dump方法接受inputstream与outputstream实例,分别代表读取 ...
- android 实践项目 总结 (修改)
Android手机定位与地图实现 在一个不熟悉的环境中,获得自己的位置,选择合适的就餐地点,住宿和公交路线成为一项难题.本次的实践项目就是为了解决上述难题的,通过调用百度地图的接口实现定位.查询公交路 ...