canvas例子一彈跳小球

來源:互聯網
上載者:User

2014年的第一篇部落格

最近在看html5的canvas,對於我這麼一個不懂得flash開發的孩子來說,當然還是專研canvas了,誰叫flash已經是明日黃花了。這個例子非常簡單,就是簡單的一個彈性小球在一個框框中不停的彈跳。

主要有兩部分構成,一個是彈性小球,一個劃定範圍的框。

首先先用canvas的arc函數畫出一個小球

ctx.beginPath();                ctx.arc(ballX, ballY, ballRad, 0, Math.PI * 2, false);                ctx.fill();
在用strokeRect畫出邊框

ctx.strokeRect(boxX, boxY, boxWidth, boxHeight);

然後每隔100ms檢查小球的位置ballX, ballY是否超出邊框,若超出邊框,則將對應的運動方向取反

// 判斷距離方向函數            function changDirect () {                var nextX = ballX + ballVX,                    nextY = ballY + ballVY;                if (nextX > boxRoundX) {                    ballVX = -ballVX;                    nextX = boxRoundX;                }                if (nextX < inboxRoundX) {                    ballVX = -ballVX;                    nextX = inboxRoundX;                }                if (nextY > boxRoundY) {                    ballVY = -ballVY;                    nextY = boxRoundY;                }                if (nextY < inboxRoundY) {                    ballVY = -ballVY;                    nextY = inboxRoundY;                }                ballX = nextX;                ballY = nextY;            }
最後清除畫布,每隔100ms,依照當前座標位置重新畫出小球和邊框的圖案

效果如所示:

也可以把小球替換成自己本地檔案夾下的圖片

var img = new Image();img.src = 'image/1.jpg';// 繪製圖形                ctx.drawImage(img, ballX - ballRad, ballY - ballRad, 2 * ballRad, 2 * ballRad);
想看原始碼和注釋的請訪問我的github:https://github.com/chenkehxx/practice/commit/65067f7bb7948abe94b052f3e69fc2b1892ab167

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.