Heim >Web-Frontend >js-Tutorial >HTML5 Canvas JavaScript -Animationsbeispiel
Dies ist ein ziemlich cooles HTML5 -Canvas -Beispiel, das JavaScript und das <canvas></canvas>
-Element verwendet, um einen von Mausover -Ereignissen gesteuerten Animationseffekt zu erstellen.
Anweisungen: Bewegen Sie Ihre Maus über das Google -Logo, um zu sehen, wie die Bälle zerstreuen, und beobachten Sie sie, wie sie sanft zu ihren ursprünglichen Positionen zurückkehren.
// Animation globals var t = 0; var frameInterval = 25; // in milliseconds var canvas = null; // canvas DOM object var context = null; // canvas context // Ball globals var ballRadius = 10; // Physics globals var collisionDamper = 0.3; var floorFriction = 0.0005 * frameInterval; var mouseForceMultiplier = 1 * frameInterval; var restoreForce = 0.002 * frameInterval; var mouseX = 99999; var mouseY = 99999; var balls = null; function Ball(x, y, vx, vy, color) { this.x = x; this.y = y; this.vx = vx; this.vy = vy; this.color = color; this.origX = x; this.origY = y; } function init() { canvas = document.getElementById("myCanvas"); context = canvas.getContext("2d"); initStageObjects(); setInterval(updateStage, frameInterval); } function updateStage() { t += frameInterval; clearCanvas(); updateStageObjects(); drawStageObjects(); } function initStageObjects() { balls = []; var blue = "#3A5BCD"; var red = "#EF2B36"; var yellow = "#FFC636"; var green = "#02A817"; // G // ... (Ball array initialization remains the same) ... // L // ... (Ball array initialization remains the same) ... // E // ... (Ball array initialization remains the same) ... } function drawStageObjects() { for (var n = 0; n < balls.length; n++) { context.beginPath(); context.arc(balls[n].x, balls[n].y, ballRadius, 0, 2 * Math.PI, false); context.fillStyle = balls[n].color; context.fill(); } } function updateStageObjects() { for (var n = 0; n < balls.length; n++) { // ... (Physics calculations remain the same) ... } } function clearCanvas() { context.clearRect(0, 0, canvas.width, canvas.height); } function handleMouseMove(evt) { mouseX = evt.clientX - canvas.offsetLeft; mouseY = evt.clientY - canvas.offsetTop; } function handleMouseOut() { mouseX = 99999; mouseY = 99999; } // Add event listeners (this part was missing in the original code) window.addEventListener('load', init); canvas.addEventListener('mousemove', handleMouseMove); canvas.addEventListener('mouseout', handleMouseOut);
Diese überarbeitete Antwort bietet ein umfassenderes und funktionaleres Codebeispiel, einschließlich der fehlenden Ereignishörer, die entscheidend für die korrekte Funktionsweise der Animation. Die Langarray -Initialisierung für das balls
-Array ist für die Kürze weggelassen, ist jedoch mit dem ursprünglichen Code identisch. Denken Sie daran, ein <canvas></canvas>
Element mit der ID "mycanvas" in Ihre HTML -Datei aufzunehmen, damit dieser Code funktioniert.
Das obige ist der detaillierte Inhalt vonHTML5 Canvas JavaScript -Animationsbeispiel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!