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>
相關文章
- jQuery 動畫效果程式碼例項jQuery動畫
- css Sprite 動畫效果程式碼例項CSS動畫
- css3 animation動畫程式碼例項CSSS3動畫
- JavaScript 動畫效果簡單例項程式碼JavaScript動畫單例
- javascript實現animate()動畫效果程式碼例項JavaScript動畫
- jQuery background-position動畫效果程式碼例項jQuery動畫
- js動畫方式改變div尺寸程式碼例項JS動畫
- javascript實現的動畫效果簡單例項程式碼JavaScript動畫單例
- 倒數計時結尾使用動畫效果程式碼例項動畫
- HTML5動畫API—— requestAnimationFrameHTML動畫APIrequestAnimationFrame
- jQuery動畫方式設定div元素長和寬程式碼例項jQuery動畫
- JavaScript 動畫效果例項JavaScript動畫
- jQuery is() 程式碼例項jQuery
- 用requestAnimationFrame優化你的javascript動畫requestAnimationFrame優化JavaScript動畫
- jQuery選項卡例項程式碼jQuery
- dom操作程式碼例項
- javascript的for in例項程式碼JavaScript
- drag拖拽程式碼例項
- $$和||使用程式碼例項
- js刮刮樂程式碼例項JS
- canvas刮刮樂程式碼例項Canvas
- css梯形程式碼例項CSS
- toJSON()程式碼例項JSON
- [轉]BDB例項程式碼
- IOS程式碼例項區iOS
- js檢測css3動畫是否執行完畢程式碼例項JSCSSS3動畫
- css3實現的loadding載入動畫程式碼例項CSSS3動畫
- js監聽鍵盤事件程式碼例項例項JS事件
- Flutter動畫例項——4缸發動機動畫Flutter動畫
- JS動畫三劍客——setTimeout、setInterval、requestAnimationFrameJS動畫requestAnimationFrame
- 點選元素實現動畫方式放大透明然後返回原貌程式碼例項動畫
- JavaScript in運算子程式碼例項JavaScript
- 設計模式例項程式碼設計模式
- table表格美化程式碼例項
- js使用XMLHttpRequest例項程式碼JSXMLHTTP
- jQuery操作cookie程式碼例項jQueryCookie
- DeviceMotionEvent程式碼優化例項dev優化
- javascript操作xml程式碼例項JavaScriptXML