我正在制作香草JS Flappy Bird,并尝试通过将pipeTop
的高度设置为{{1}的高度来在pipeBottom
和pipeBottom
之间创建间隙}加上应作为空白的变量。
我正在关注一个教程,并且我的代码似乎与这些教程的代码相同-尽管我的管道图像彼此重叠,而不显示间隙。
pipeTop
// Canvas and getContext
var cvs = document.getElementById('canvas');
var ctx = cvs.getContext('2d');
// Load Images
var bird = new Image();
var bg = new Image();
var fg = new Image();
var pipeTop = new Image();
var pipeBottom = new Image();
bird.src = "images/bird.png";
bg.src = "images/bg.png";
fg.src = "images/fg.png";
pipeTop.src = "images/pipeTop.png";
pipeBottom.src = "images/pipeBottom.png";
// pipe vars
var gap = 100;
var constant = pipeTop.height+gap;
// Draw Images
window.onload = function draw() {
ctx.drawImage(bg,0,0);
ctx.drawImage(pipeTop, 100, 0);
ctx.drawImage(pipeBottom, 100, 0+constant);
ctx.drawImage(fg,0, cvs.height - fg.height);
};
draw();
应该使底部管道的高度等于gap + pipeTop的高度,但事实并非如此。相反,底部管道与顶部管道重叠。 (如上图所示)
答案 0 :(得分:1)
JavaScript异步执行操作,包括加载图像。如果您在代码中设置了tableView.register(UINib(nibName: "NibSongCell", bundle: nil), forCellReuseIdentifier: "SongCell")
,则不会立即加载图像。因此,当您设置// if using a custom cell, replace UITableViewCell.self with that class
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "SongCell")
时src
为零。一切加载完成后,您需要进行设置。