Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我会在Javascript中获得无限FPS&;脚本从何处获取此字符串?_Javascript_Html_Html5 Canvas_Frame Rate_Game Loop - Fatal编程技术网

为什么我会在Javascript中获得无限FPS&;脚本从何处获取此字符串?

为什么我会在Javascript中获得无限FPS&;脚本从何处获取此字符串?,javascript,html,html5-canvas,frame-rate,game-loop,Javascript,Html,Html5 Canvas,Frame Rate,Game Loop,正在尝试使用Html、Css和Javascript创建代码笔示例, 我刚刚添加了一个FPS计数器,但它没有输出实际的FPS, 取而代之的是,它将无限大打印到我用作容器的跨度。 在我的Js中没有无限赋值,不是作为变量, 作为字符串或任何其他数据类型。所以问题是Javascript从何而来? 它是常数吗?它是窗口对象吗?还是内置方法 这是我的Js var filterStrength = 20; var frameTime = 0, lastLoop = new Date, thisLoop; fu

正在尝试使用Html、Css和Javascript创建代码笔示例,
我刚刚添加了一个FPS计数器,但它没有输出实际的FPS,
取而代之的是,它将无限大打印到我用作容器的跨度。 在我的Js中没有无限赋值,不是作为变量,
作为字符串或任何其他数据类型。所以问题是Javascript从何而来?
它是常数吗?它是窗口对象吗?还是内置方法

这是我的Js

var filterStrength = 20;
var frameTime = 0, lastLoop = new Date, thisLoop;
function gameLoop(){
  //let frameTime;
  var thisFrameTime = (thisLoop=new Date) - lastLoop;
  frameTime+= (thisFrameTime - frameTime) / filterStrength;
  lastLoop = thisLoop;
}

// Report the fps only every second, to only lightly affect measurements
var fpsOut = document.getElementById('Fps');
setInterval(function(){
  fpsOut.innerHTML = (1000/frameTime).toFixed(1) + " fps";
},1000);


const w = innerWidth, h = innerHeight
const amount = 288 // Chng from: 88

function setup() {
  v = min(w, h)
  createCanvas(w, h)
  const Canv = document.getElementsByTagName("canvas")[1]; 
  background(0)
  Canv.animate({filter: ["hue-rotate(180deg) blur(1.2px)",
                         "hue-rotate(246deg) blur(.34px)"]
                //transform: ["rotateZ(0deg)","rotateZ(280deg)"]
               
               },
               {iterations: Infinity,
                duration: 2848,
                direction: "alternate"})
}

function draw() {
  colorMode(RGB)
  background(0, 0, 0, 10)
  
  var t = frameCount/60 + 3/2*PI
  t += cos(t)/3*2
  const R = v/3
  
  for(let i = 0; i < amount; i++) {
    const a = i/amount * PI * (sin(t)+1) + t - 4780 // Changed last value from 0.7
    const r = v/45 * tan(i/amount*10*PI) * (cos(t)+1)/2 * 472
    const x = w/2 + (R + r) * sin(a) 
    const y = h/2 - (R + r) * cos(a) /0.8
    
    colorMode(HSB, 2*PI, 100, 100) 
    stroke(a - t, 720, 400)
    fill(a - t, 50, 255)
    ellipse(x, y, v/a*2, v/R *x)
  }
}
var滤波器强度=20;
var frameTime=0,lastLoop=new Date,thisLoop;
函数gameLoop(){
//让帧时间;
var thisFrameTime=(thisLoop=新日期)-lastLoop;
frameTime+=(thisFrameTime-frameTime)/filterStrength;
lastLoop=thisLoop;
}
//仅每秒报告一次fps,以仅轻微影响测量
var fpsOut=document.getElementById('Fps');
setInterval(函数(){
fpsOut.innerHTML=(1000/帧时).toFixed(1)+“fps”;
},1000);
常数w=内部宽度,h=内部高度
施工量=288//Chng from:88
函数设置(){
v=最小值(w,h)
createCanvas(w,h)
const Canv=document.getElementsByTagName(“画布”)[1];
背景(0)
动画({filter:[“色调旋转(180度)模糊(1.2px)”,
“色调旋转(246度)模糊(.34px)”]
//变换:[“旋转角度(0度)”,“旋转角度(280度)”]
},
{迭代:无限,
持续时间:2848,
方向:“交替”})
}
函数绘图(){
彩色模式(RGB)
背景(0,0,0,10)
var t=frameCount/60+3/2*PI
t+=cos(t)/3*2
常数R=v/3
for(设i=0;i
可以在此处查看该笔:


另外,如何修复此问题,使其实际显示窗口或画布的FPS?

表示
frameTime
为零…那么为什么为零
console.log()
是您的朋友。我想。。。。您从未调用gameLoop;)看起来你添加了gameLoop调用,现在它可以工作了…@epascarello是的,我一开始不知道在哪里添加它。但是把它弄得乱七八糟。。仍然只有20帧左右though@RyanStone也许你的电脑不够快,我的速度是60帧。