- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试复制 w3 学校的游戏教程。到目前为止,一切都很成功,直到我必须通过将其定义为数组并每 150 个间隔调用 .push() 函数来创建多个障碍。
当我尝试使用这个确切的 Javascript 代码运行游戏时,它不断在我的控制台中返回错误:
pbf.js:108 Uncaught TypeError: pbfObstacle.push is not a function at updateGameArea (pbf.js:108)
我想知道是否有人可以帮助我解决这个问题,这样它就不会返回控制台错误,而是会按预期创建多个障碍。任何帮助深表感谢。谢谢。
这是我的 JavaScript:
// This will declare the variables to create the canvas on the <body>
var gameArea = {
canvas : document.createElement("canvas"),
start : function() {
this.canvas.style.width = "1920px";
this.canvas.style.height = "auto";
this.context = this.canvas.getContext("2d");
document.body.insertBefore(this.canvas, document.body.childNodes[0]);
// creating frames that we can use to count
this.frameNo = 0;
this.interval = setInterval(updateGameArea, 20);
window.addEventListener('keydown', function(e) {
gameArea.keys = (gameArea.keys || []);
gameArea.keys[e.keyCode] = true;
})
window.addEventListener('keyup', function(e) {
gameArea.keys[e.keyCode] = false;
})
},
clear : function() {
this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
},
// this will clear the interval when one component crashes another
stop : function() {
clearInterval(this.interval);
}
}
// This will make the game piece
var pbfGamePiece;
function component (width, height, color, x, y) {
this.width = width;
this.height = height;
this.color = color;
this.speedX = 0;
this.speedY = 0;
this.x = x;
this.y = y;
this.update = function() {
ctx = gameArea.context;
ctx.fillStyle = color;
ctx.fillRect(this.x, this.y, this.width, this.height);
}
this.newPos = function() {
this.x += this.speedX;
this.y += this.speedY;
}
// this will check if one component crashes another
this.crashWith = function(otherobj) {
var myleft = this.x;
var myright = this.x + (this.width);
var mytop = this.y;
var mybottom = this.y + (this.height);
var otherleft = otherobj.x;
var otherright = otherobj.x + (otherobj.width);
var othertop = otherobj.y;
var otherbottom = otherobj.y + (otherobj.height);
var crash = true;
if ((mybottom < othertop) ||
(mytop > otherbottom) ||
(myright < otherleft) ||
(myleft > otherright)) {
crash = false;
}
return crash;
}
}
// This will create the pbfObstacle into an array
var pbfObstacle = [];
// This loads the function tagged on the <body>
function startGame() {
gameArea.start();
pbfGamePiece = new component(8, 15, "#3baffc", 15, 115);
pbfObstacle = new component(3, 50, "#ff4000", 95, 100);
}
// This clears and updates the game area while also adding multiple obstacles
function updateGameArea() {
var x, y;
for (i = 0; i < pbfObstacle.length; i += 1) {
if (pbfGamePiece.crashWith(pbfObstacle[i])) {
gameArea.stop();
return;
}
}
gameArea.clear();
gameArea.frameNo += 1;
if (gameArea.frameNo == 1 || everyinterval(150)) {
x = gameArea.canvas.width;
y = gameArea.canvas.height - 200;
pbfObstacle.push(new component(10, 200, "green", x, y));
}
for (i = 0; i < pbfObstacle.length; i += 1) {
pbfObstacle[i].x += -1;
pbfObstacle[i].update();
}
pbfGamePiece.newPos();
pbfGamePiece.update();
}
// This function returns every true interval
function everyinterval(n) {
if((gameArea.frameNo / n) % 1 == 0) {return true;}
return false;
}
// These functions will allow the buttons to create movement of the objects
function moveup() {
pbfGamePiece.speedY -= 1;
}
function movedown() {
pbfGamePiece.speedY += 1;
}
function moveleft() {
pbfGamePiece.speedX -= 1;
}
function moveright() {
pbfGamePiece.speedX += 1;
}
// This will stop the game pieces animation from not stopping
function stopMove() {
pbfGamePiece.speedX = 0;
pbfGamePiece.speedY = 0;
}
HTML 非常简单:
<body onload="startGame()">
....
</body>
最佳答案
function startGame() {
gameArea.start();
pbfGamePiece = new component(8, 15, "#3baffc", 15, 115);
pbfObstacle.push(new component(3, 50, "#ff4000", 95, 100));
}
在 startGame()
中,您将新组件分配给 pbfObstacle
。所以它显示错误。推送新组件
它就会工作。
关于javascript - 随着帧数的增加尝试创建多个障碍物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47109275/
我需要从 1024 增加 FD_SETSIZE 值至 4096 .我知道最好使用 poll()/epoll()但我想了解什么是优点/缺点。主要问题是:我要重新编译glibc吗? ?我读了几个线程,其中
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我在 HTML 文件中有这样的内容: var value = 0; add(x){ x++; do
有没有办法在用户向上滚动时增加变量,并在用户使用 JavaScript 向下滚动时减少变量?变量没有最大值或最小值,如果能够调整灵敏度就好了。我不知道从哪里开始,感谢您的帮助! 编辑:没有滚动条,因为
我是 ios 新手,遇到以下问题。 我想根据表格 View 中元素的数量增加和减少表格 View 的高度大小。如果在输入时客户端在输出时给出 3 个或超过 3 个元素,我希望看到一个比默认行大 2 行
所以我一直在四处搜索,似乎大多数人认为以下列方式递增 indexPath 是正确的方法: NSIndexPath *newIndexPath = [NSIndexPath indexPathForRo
我有一个关于 connSupervisionTimeout 的问题。 我正在使用 CoreBluetooth 编写应用程序。我检查了连接参数和 connSupervisionTimeout = 720
我正在尝试根据页面的滚动位置更改元素的填充;当用户向下滚动页面时,填充会增加,而当他们向上滚动时,填充会减少。 我的主要问题是滚动不是很流畅,有时如果我滚动到页面顶部太快,每次元素的填充大小都不一样。
我正在尝试计算 18456 个基因的相关性度量,但编译器 (Dev C) 在将宏 GENE 或 INDEX 增加到 4000 到 5000 之间的值后退出或大。例如,它适用于: # define GE
我有一个带有 position: absolute 和 CSS3 过渡的圆形元素(a 元素)。在 hover 事件中,我想增加圆的高度和宽度,但我想在所有边上添加像素,而不仅仅是在左侧或右侧。 示例如
为了改善用户体验,我计划在我网站的所有页面(A-、A、A+)上增加/减少/重置字体大小 我面临的问题是页面上不同元素使用的字体大小不统一。有些是 14px,有些是 18px,有些是 12px,有些是
本文实例讲述了Yii框架数据库查询、增加、删除操作。分享给大家供大家参考,具体如下: Yii 数据库查询 模型代码: ?
sql替换语句,用该命令可以整批替换某字段的内容,也可以批量在原字段内容上加上或去掉字符。 命令总解:update 表的名称 set 此表要替换的字段名=REPLACE(此表要替换的字段名, '原
sql不常用函数总结以及事务,增加,删除触发器 distinct 删除重复行 declare @x 申明一个变量 convert(varchar(20),t
要增加我使用的最大可用内存: export SPARK_MEM=1 g 或者我可以使用 val conf = new SparkConf() .setMaster("loca
我正在尝试将文本(自定义文本按钮)放入 AppBar 的前导属性中。但是,当文本太长时,文本会变成多行 Scaffold( appBar: AppBar( centerTi
我正在使用最新版本的 NetBeans,我需要增加输出和菜单的字体大小(不是代码部分)。我试过: netbeans_default_options=".... --fontsize 16" 但是当我将
我必须将 180000 个点绘制到一个 EPS 文件中。 使用标准 gnuplot 输出尺寸点彼此太接近,这使得它们无法区分。有没有办法增加图像的宽度和高度? 最佳答案 是的。 set termina
我有一个带有输入字段的 twitter bootstrap 3 导航栏。我想增加输入字段的宽度。我已尝试设置 col 大小,但它不起作用。 html比较长,请引用bootply http://www.
我正在尝试增加 ggplot 标题中下划线的大小/宽度/厚度。我曾尝试使用大小、宽度和长度,但没有成功。 这是我所做的一个例子。 test <- tibble(x = 1:5, y = 1, z =
我是一名优秀的程序员,十分优秀!