我有一个错误的图像。我想让该图像的 5 个副本从屏幕一侧飞入并在屏幕周围反弹并从侧面反弹。我希望他们都有不同的起始位置和不同的方向。
所以我做了一些全局变量
var flyVar;
var flySpeed = 5;
var widthMax = 0;
var heightMax = 0;
var xPosition = 0;
var yPosition = 0;
var xDirection = "";
var yDirection = "";
var bugFly;
var count = 1;
var bug = "bug";
我有一个名为的函数setBugs()
,用于根据用户屏幕的大小设置 widthMax 和 heightMax 的值。
我有一个 bugStartingPlace 函数来设置每个 bug 的初始起始位置。我不会发布整个函数,但它对“bug1”到“bug5”的作用相同,给它们不同的值。
function bugStartingPlace(bugName) {
//Accepts string as argument and sets the starting position and starting direction of each bug.
if (bugName == "bug1") {
xPosition = 0;
yPosition = 100;
xDirection = "right";
yDirection = "up";
}
}
我有一个名为 flyBug() 的函数,它执行动画并设置图像的位置。它由一堆这样的语句组成。我知道它有效,因为我可以使它与 1 个错误一起工作。问题在于有 5 个错误。
function flyBug() {
if (xDirection == "right" && xPosition > (widthMax - document.getElementById("bugImage").width - flySpeed))
xDirection = "left";
<!--More flow control statements are here-->
document.getElementById("bug1").style.left = xPosition + "px";
document.getElementById("bug1").style.top = yPosition + "px";
<!-- More statements are here that set the position of the image -->
}
所以,我需要一些方法来让动画与 body onload() 事件一起进行。一个问题是 setInterval 不允许包含参数的函数。所以我不能在body onload事件中放置多个语句,将“bug1”作为参数传递给这个函数,“bug2”作为参数传递给这个函数等等。这就是我制作全局计数变量的原因。这样,每当我需要更改错误的名称时,我都会更改 count 的名称,然后执行
bug = bug + count;
但这增加了很多复杂性。我需要 bugStartingPlace() 函数的错误名称,所以我需要在使用该函数之前更改 count 的值并更改 bug 的值。一旦我使用了 bugStartingPlace() 函数,它就会改变全局变量的值。然后我需要在再次更改 bug 的值之前使用 flyBug()。
我想问题之一是我使用全局变量来表示方向和位置,即使我有多个错误。它适用于一个错误,但不适用于多个错误。
谁能给我关于这个程序的逻辑应该如何工作的提示?