嘿,伙计们,我在 Canvas 上遇到了一些 JavaScript 问题。基本上,我不知道如何让球以之字形移动。我是 JavaScript 新手,还在学习它,所以如果你们中的任何人能帮助我,我将不胜感激。所以我的问题是我将如何让球以之字形移动?目前它只是从左到右做一条直线。
这是我的代码
// JavaScript Document
window.addEventListener('load', eventWindowLoaded, false);
function eventWindowLoaded() {
canvasApp();
}
function canvasSupport () {
return Modernizr.canvas;
}
function canvasApp() {
// test if Modernizr has been loaded
if (!canvasSupport()) {
return;
}
var pointImage = new Image();
// put an image into an image object
pointImage.src = "point.png";
function drawScreen () {
// fill the background
context.fillStyle = '#EEEEEE';
context.fillRect(0, 0, theCanvas.width, theCanvas.height);
// Draw a Box around the fill
context.strokeStyle = '#000000';
context.strokeRect(1, 1, theCanvas.width - 2, theCanvas.height-2);
// Create ball
if (moves > 0 ) {
moves--;
ball.x += xunits;
ball.y += yunits;
}
// Draw points to illustrate path
points.push({
x: ball.x,
y:ball.y
});
// for loop with drawImage inside the loop to draw the points
for (var i = 0; i < points.length; i++) {
context.drawImage(pointImage, points[i].x, points[i].y, 1, 1);
}
context.fillStyle = "#000000";
context.beginPath();
context.arc(ball.x, ball.y, ball_radius, 0, Math.PI * 2, true);
context.closePath();
context.fill();
}
var speed = 10;
// coordinates of the left hand point
var p1 = {
x: 20,
y: 250
};
var p2 = {
x: 480,
y: 250
};
// distance between left and right x coordinates
var dx = p1.x - p2.x;
var dy = p1.y - p2.y;
// Calculate the distance between points
var distance = Math.sqrt(dx * dx + dy * dy);
var moves = distance / speed;
var xunits = (p2.x - p1.x) / moves;
var yunits = (p2.y - p1.y) / moves;
var ball = {
x: p1.x,
y: p1.y
};
var points = new Array();
var the_interval = 20
var ball_radius = 5
// save the context in a variable
theCanvas = document.getElementById("canvasOne");
context = theCanvas.getContext("2d");
// call the drawscreen function every 33 miliseconds
setInterval(drawScreen, the_interval);
}
我正在使用Modernizr来帮助我解决这个问题。