html canvas 與小丑 。
介紹
以前開發動畫應用你可能需要學習很複雜的動畫製作框架。自從HTML5畫布(Canvas)功能面世後,Web動畫就一下子從雲端跌落到了地面——任何一個Web程式設計師都可以輕易的用畫布(Canvas)技術+JavaScript來開發出各種動畫效果。
而文下面的教程中將使用的是另外一個叫做kinetic的Web動畫工具包。它們都是開源的。
我們需要了解Canvas中的幾個API,然後使用需要的動畫引數,就能製作出這個有趣又能響應你的動作的Web動畫。把滑鼠放到上面的小丑臉上,然後移開,看看會發生效果。
基本結構
KineticJS首先是要繫結到HTML頁面上的一個DOM容器元素上,比如最常用的< div >標籤。瀏覽器最終顯示的就是這些使用者層的疊加效果。
繪製介面
現在我們開始用Kinetic製作我們的畫面。
Kinetic繪圖的基本的流程可以如下圖所示:
首先是建立一個HTML5頁面,在裡新增對Kinetic庫的引用:
<script type="text/javascript" src="kinetic-v5.1.0.min.js"></script>
在中新增一個用於繫結到Kinetic用於建立舞臺的容器,比如說可以是個 < div >:
<div id="“container”"></div>
在頁面載入時進行繪圖
window.onload = function() {
// 定義全域性變數
var sw = 578;
var sh = 400;
//建立Kinetic舞臺,繫結我們新增的<div>容器
var stage = new Kinetic.Stage({
container : “container”, //<div>的id
width : 578, //建立的舞臺寬度
height : 400 //建立的舞臺高度
});
//建立Kinetic使用者層
var layer = new Kinetic.Layer();
}
</div></div>
繪製左眼、右眼
首先我們需要先建立Kinetic物件,並呼叫Line()方法,進行繪製。
使用kinetic工具包中的方法,繪製左右眼
// 建立一個Kinetic線形物件
var leftEye = new Kinetic.Line({
x: 150, // x軸位置
points: [0, 200, 50, 190, 100, 200, 50, 210], // 位置點
tension: 0.5, // 線條彈性
closed: true,
stroke: 'white', // 線條顏色
strokeWidth: 10 // 線條寬度
});
// 建立一個Kinetic線形物件
var rightEye = new Kinetic.Line({
x: sw - 250,
points: [0, 200, 50, 190, 100, 200, 50, 210],
tension: 0.5,
closed: true,
stroke: 'white',
strokeWidth: 10
});
// 向使用者層中新增上面的線形
layer.add(leftEye)
.add(rightEye);
// 將上面的使用者層新增到舞臺上
stage.add(layer);
繪製鼻子和嘴巴
繪製鼻子和嘴巴
var nose = new Kinetic.Line({
points: [240, 280, sw/2, 300, sw-240,280],
tension: 0.5,
closed: true,
stroke: 'white',
strokeWidth: 10
});
var mouth = new Kinetic.Line({
points: [150, 340, sw/2, 380, sw - 150, 340, sw/2, sh],
tension: 0.5,
closed: true,
stroke: 'red',
strokeWidth: 10
});
左右眼動畫
讓小丑的左右眼能夠動起來,需要監聽事件,用到兩事件指標位於元素上方時(mouseover),滑鼠從元素上移開時(mouseout),執行動畫操作。
var leftEyeTween = new Kinetic.Tween({
node: leftEye,
duration: 1,
easing: Kinetic.Easings.ElasticEaseOut,
y: -100,
points: [0, 200, 50, 150, 100, 200, 50, 200]
});
var rightEyeTween = new Kinetic.Tween({
node: rightEye,
duration: 1,
easing: Kinetic.Easings.ElasticEaseOut,
y: -100,
points: [0, 200, 50, 150, 100, 200, 50, 200]
});
鼻子和嘴巴動畫
var noseTween = new Kinetic.Tween({
node: nose,
duration: 1,
easing: Kinetic.Easings.ElasticEaseOut,
y: -100,
points: [220, 280, sw/2, 200, sw-220,280]
});
var mouthTween = new Kinetic.Tween({
node: mouth,
duration: 1,
easing: Kinetic.Easings.ElasticEaseOut,
points: [100, 250, sw/2, 250, sw - 100, 250, sw/2, sh-20]
更多內容如時鐘效果、 影像縮放和裁剪、Canvas簡單實用的圖表 - Chart.js 請參見:http://hubwiz.com/course/55adf42f3ad79a1b05dcbff0/
相關文章
- HTML5 SVG與Canvas的區別HTMLSVGCanvas
- html5 canvas學習--操作與使用影象HTMLCanvas
- 解析Html Canvas的卓越效能與高效渲染策略HTMLCanvas
- HTML <canvas> 標籤HTMLCanvas
- HTML5 -- CanvasHTMLCanvas
- JavaScript HTML DOM Canvas 物件JavaScriptHTMLCanvas物件
- HTML5的CanvasHTMLCanvas
- HTML5(五)——Canvas APIHTMLCanvasAPI
- HTML 5 Canvas vs. SVGHTMLCanvasSVG
- HTML5 Canvas 詳解HTMLCanvas
- html5畫布canvasHTMLCanvas
- html5 canvas分層HTMLCanvas
- Java謎題:小丑Java
- 高效能渲染——詳解Html Canvas的優勢與效能HTMLCanvas
- 《HTML5canvas開發詳解(第2版)》——1.9 HTML5Canvas物件HTMLCanvas物件
- HTML5系列之canvas用法HTMLCanvas
- 06.HTML5(SVG和canvas)HTMLSVGCanvas
- html5canvas畫時鐘HTMLCanvas
- HTML5 Canvas API詳解HTMLCanvasAPI
- HTML5的canvas標籤HTMLCanvas
- HTML使用canvas載入圖片HTMLCanvas
- 淺談《Balatro》小丑牌的遊戲設計與rogue元素遊戲設計
- 【致敬童年】HTML5+canvas賽車遊戲HTMLCanvas遊戲
- Html5 canvas創意特效合集HTMLCanvas特效
- html2canvas的踩坑之路HTMLCanvas
- html-canvas轉存為圖片HTMLCanvas
- 淺析HTML5的Canvas——1HTMLCanvas
- html5中canvas繪製矩形HTMLCanvas
- HTML5-canvas動畫閃爍分析HTMLCanvas動畫
- html5 canvas 英雄打怪小遊戲HTMLCanvas遊戲
- HTML5 canvas圖片爆炸特效HTMLCanvas特效
- HTML5 快速學習二 CanvasHTMLCanvas
- 提高HTML5Canvas效能的技巧HTMLCanvas
- 使用 HTML 實現截圖-html2canvas使用記錄HTMLCanvas
- 【黑科技】React-canvas助力HTML5ReactCanvasHTML
- HTML5的SVG和Canvas的使用HTMLSVGCanvas
- html5 canvas學習--繪製文字HTMLCanvas
- html5canvas全屏煙花動畫特效HTMLCanvas動畫特效