ホームページ >ウェブフロントエンド >jsチュートリアル >HTML5キャンバスJavaScriptアニメーションの例
これは、JavaScriptと
マウスをGoogleロゴの上に置いてボールが散らばるのを見て、元の位置に優しく戻るのを見てください。 この改訂された回答は、アニメーションが正しく機能するために不可欠な欠落しているイベントリスナーを含む、より完全で機能的なコードの例を提供します。
配列の長い配列初期化は簡潔に省略されていますが、元のコードと同じです。 このコードを機能させるために、htmlファイルにID "mycanvas"に// 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);要素を含めることを忘れないでください。
以上がHTML5キャンバスJavaScriptアニメーションの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。