在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ Canvas
書單
JavaScript 動(dòng)畫
HTML
CSS Reset
屬性操作
DOM 事件
閉包
Photoshop
Atom 文本編輯器
表單操作
布局解決方案
類型系統(tǒng)
開(kāi)發(fā)實(shí)踐
數(shù)據(jù)通信
變量作用域
BOM
JavaScript 程序設(shè)計(jì)
前端工程師概述
CSS
響應(yīng)式布局
表達(dá)式與運(yùn)算符
基本語(yǔ)法
JavaScript 介紹
版本控制
布局
調(diào)試器
背景
圖片保存
多媒體
文檔樹(shù)
列表操作
Sublime 編輯器
盒模型
常見(jiàn)布局樣例
類型識(shí)別
變形
數(shù)據(jù)存儲(chǔ)
選擇器
頁(yè)面架構(gòu)
開(kāi)發(fā)及調(diào)試工具
頁(yè)面模塊化
節(jié)點(diǎn)操作
測(cè)量及取色
瀏覽器兼容
HTML 簡(jiǎn)介
內(nèi)置對(duì)象
實(shí)體字符
產(chǎn)品前端架構(gòu)
協(xié)作流程
切圖
工具, 面板, 視圖
正則表達(dá)式
動(dòng)畫
語(yǔ)句
面向?qū)ο?/span>
HTML 語(yǔ)法
HTML 標(biāo)簽
技術(shù)選擇
樣式操作
圖片優(yōu)化與合并
語(yǔ)法
DOM 編程藝術(shù)
Canvas
接口設(shè)計(jì)
頁(yè)面優(yōu)化
文本

Canvas

Canvas

Mozilla 官方 <canvas> 教程在這里

畫布 <canvas> 的默認(rèn)寬高為 300 與 150 ,但是同樣可以使用 CSS 設(shè)定寬高。但因?yàn)?CSS 與 JavaScript 在渲染工程中有速度的差異,所以不建議使用 CSS 對(duì) <canvas> 的寬高做設(shè)定。

<canvas id="canvasId" width="300" height="150">
</canvas>

渲染上下文對(duì)象

下面的 ctx 即為渲染上下文對(duì)象。globalCompositeOperation 為對(duì)于 canvas 繪畫時(shí)的渲染屬性設(shè)置,具體表現(xiàn)如下圖所示。

var canvas = document.getElementById('canvasId');
var ctx = canvas.getContext('2d');

// 繪畫 canvas 的屬性
ctx.globalCompositeOperation = 'destination-over';

http://wiki.jikexueyuan.com/project/fend_note/images/C/canvas-global-composite.png" alt="" />

繪圖步驟

http://wiki.jikexueyuan.com/project/fend_note/images/C/canvas-drawing-steps.png" alt="" />

一個(gè)周期就是完整的一幀的繪畫過(guò)程。

http://wiki.jikexueyuan.com/project/fend_note/images/C/canvas-animation.gif" alt="" />

var sun = new Image();
var moon = new Image();
var earth = new Image();

function init() {
  sun.src = 'Canvas_sun.png';
  moon.src = 'Canvas_moon.png';
  earth.src = 'Canvas_earth.png';
  window.requestAnimationFrame(draw);
}

function draw(){
  var ctx = document.getElementById('canvas').getContext('2d');

  ctx.globalCompositeOperation = 'destination-over';
  // 清空畫布內(nèi)容
  ctx.clearRect(0, 0, 300, 300);

  ctx.fillStyle = 'rgba(0, 0, 0, 0.4)';
  ctx.strokeStyle = 'rgba(0, 153, 255, 0.4)';

  // 保存畫布狀態(tài)
  ctx.save();
  ctx.translate(150, 150);

  // 開(kāi)始繪制圖形

  // 地球
  var time = new Date();
  ctx.rotate(((2*Math.PI)/60)* time.getSeconds() + ((2*Math.PI)/60000)*time.getMilliseconds());
  ctx.translate(105, 0);
  // 陰影
  ctx.fillRect(0, -12, 50, 24);
  ctx.drawImage(earth, -12, -12);

  // 月亮
  ctx.rotate(((2*Math.PI)/6)*time.getSeconds() + ((2*Math.PI)/6000)*time.getMilliseconds());
  ctx.translate(0, 28.5);
  ctx.drawInmage(moon, -3.5, -3.5);

  // 恢復(fù)畫布狀態(tài)
  ctx.restore();

  ctx.beginPath();
  ctx.arc(150, 150, 105, 0, Math.PI*2, false);

  ctx.stroke();

  ctx.drawImage(sun, 0, 0, 300, 300);

  window.requestAnimationFrame(draw);
}

init();
上一篇:書單下一篇:HTML 語(yǔ)法