requestAnimationFrame()動畫例項程式碼
分享一段程式碼例項,它利用requestAnimationFrame()結合canvas實現了動畫效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> canvas { display: block; margin: 0 auto; } #box { margin-top: 100px; margin-bottom: 20px; text-align: center; } </style> <script type="text/javascript"> function animaFuns() { var requestAnimFrame = (function() { return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || setAnimationFuns; })(); function setAnimationFuns(callback) { window.setTimeout(callback, 5); } var canvas = null, context = null, i = 0, R = 180, int = null; function init() { canvas = document.createElement("canvas"); canvas.width = 456; canvas.height = 456; context = canvas.getContext("2d"); document.body.appendChild(canvas); } function draw() { i += 0.02; if (i < 2) { var PI = Math.PI * i; } else if (i >= 2) { i = 0; } var x = Math.sin(PI) * R + 225; var y = Math.cos(PI) * R + 225; context.fillStyle = '#eee'; context.fillRect(0, 0, 456, 456); context.fillStyle = 'rgb(255,0,0)'; context.beginPath(); context.arc(x, y, 20, 0, Math.PI * 2, true); context.closePath(); context.fill(); } function animate() { draw(); init = requestAnimFrame(animate); } var stopDom = document.getElementById("stopAnimation"); var startDom = document.getElementById("startAnimation"); stopDom.onclick = function() { cancelAnimationFrame(init); } startDom.onclick = function() { cancelAnimationFrame(init); init = requestAnimationFrame(animate); } init(); animate(); } window.onload = function() { animaFuns(); } </script> </head> <body> <div id="box"> <button type="button" id="startAnimation">開始動畫</button> <button type="button" id="stopAnimation">停止動畫</button> </div> </body> </html>
相關文章
- HTML5動畫API—— requestAnimationFrameHTML動畫APIrequestAnimationFrame
- JavaScript運動框架程式碼例項JavaScript框架
- Flutter動畫例項——4缸發動機動畫Flutter動畫
- 美化滾動條效果程式碼例項
- JS動畫三劍客——setTimeout、setInterval、requestAnimationFrameJS動畫requestAnimationFrame
- css3晃動效果程式碼例項CSSS3
- SVG拖動繪製矩形程式碼例項SVG
- dom操作程式碼例項
- css梯形程式碼例項CSS
- led驅動程式例項
- CSS3星系運動效果程式碼例項CSSS3
- 設計模式例項程式碼設計模式
- JavaScript in運算子程式碼例項JavaScript
- table表格美化程式碼例項
- JavaScript隨滑鼠晃動的div塊程式碼例項JavaScript
- 純css tab選項卡程式碼例項CSS
- jQuery tab選項卡效果程式碼例項jQuery
- CSS 隔行變色程式碼例項CSS
- HTML5 拖拽程式碼例項HTML
- JavaScript 阻止事件冒泡程式碼例項JavaScript事件
- [例項分割]Condinst程式碼筆記筆記
- canvas刮刮樂程式碼例項Canvas
- canvas載入效果程式碼例項Canvas
- CSS空心箭頭程式碼例項CSS
- jQuery.map()方法程式碼例項jQuery
- CSS橢圓效果程式碼例項CSS
- CSS條紋背景程式碼例項CSS
- flex居中佈局程式碼例項Flex
- JavaScript取餘數程式碼例項JavaScript
- canvas繪製扇形程式碼例項Canvas
- table細線表格例項程式碼
- js利用H5的requestAnimationFrame()API實現動畫效果JSH5requestAnimationFrameAPI動畫
- 天美動畫師例項講解:如何才能畫好一團火焰?動畫
- jquery.idTabs.min.js選項卡程式碼例項jQueryJS
- JS 預編譯程式碼例項分析JS編譯
- 響應式佈局程式碼例項
- JavaScript 表單驗證程式碼例項JavaScript
- canvas原型鐘錶效果程式碼例項Canvas原型
- flex彈性佈局程式碼例項Flex