为什么我的drawImage的高度参数不接受'0 + constant'?

时间:2019-03-25 20:54:24

标签: javascript

我正在制作香草JS Flappy Bird,并尝试通过将pipeTop的高度设置为{{1}的高度来在pipeBottompipeBottom之间创建间隙}加上应作为空白的变量。

我正在关注一个教程,并且我的代码似乎与这些教程的代码相同-尽管我的管道图像彼此重叠,而不显示间隙。

enter image description here

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的高度,但事实并非如此。相反,底部管道与顶部管道重叠。 (如上图所示)

1 个答案:

答案 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为零。一切加载完成后,您需要进行设置。