为什么我的动画没有检测页面宽度?

Why is my animation not detecting page width?

我正在尝试让这个吃豆子动画在图像数组中循环并在到达页面边缘时反转方向。

我尝试在 Chrome 中调试,它给了我以下错误

“无法读取 null 的属性(读取宽度)”

var pos = 0;
//pageWidth is the width of the webpage. This is later used to calculate when Pac-Man needs to turn around. 
const pageWidth = window.innerWidth;
//This array contains all the PacMan movement images
const pacArray = [
  ['./images/PacMan1.png', './images/PacMan2.png'],
  ['./images/PacMan3.png', './images/PacMan4.png'],
];

// this variable defines what direction should PacMan go into:
// 0 = left to right
// 1 = right to left (reverse)
var direction = 0;

// This variable helps determine which PacMan image should be displayed. It flips between values 0 and 1
var focus = 0;

// This function is called on mouse click. Every time it is called, it updates the PacMan image, position and direction on the screen.
function Run() {
  let img = document.getElementById('PacMan');
  let imgWidth = img.width;
  let pageWidth = window.innerWidth;
  focus = (focus + 1) % 2;
  direction = checkPageBounds(direction, imgWidth, pos, pageWidth);
  img.src = pacArray[direction][focus];
  if (direction) {
    pos -= 20;
    img.style.left = pos + 'px';
  } else {
    pos += 20;
    img.style.left = pos + 'px';
  }
}

setInterval(Run,200)




// This function determines the direction of PacMan based on screen edge detection. 
function checkPageBounds(direction, imgWidth, pos, pageWidth) {
 

  if (direction == 1 & pos + imgWidth > pageWidth) direction== 0;
  if (direction == 0 & pos < 0) direction == 1;
  
  
  //
  return direction;
}


module.exports = checkPageBounds;

您的示例未显示 template/html。元素id(PacMan)写对了吗?

此示例应在控制台中打印 200:

<img id="PacMan" src="https://picsum.photos/200/300" />
const img = document.getElementById('PacMan');
let imgWidth = img.width;

一点题外话:看看“var”、“const”和“let”的区别。