九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
前端|利用<canvas>畫布制作地球軌道
一.什么是<canvas>
<canvas> 畫布標簽常用于繪制圖像,但是,<canvas> 元素本身并沒有繪制能力,它僅僅是圖形的容器,要想通過<canvas>畫布標簽來繪制圖像,還需要調(diào)用js方法。其中最常見得方法是getContext()方法,它可返回一個對象,該對象提供了用于在畫布上繪圖的方法和屬性,可在畫布上繪制文本、線條、矩形、圓形等等。今天就利用<canvas> 畫布來繪制一下地球軌道的效果。
圖1.1 效果圖
二.<canvas>基礎(chǔ)知識介紹
canvas只有height高度和width寬度兩個屬性。其默認畫布大小是300×150(寬×高)矩形畫布。<canvas> 畫布的基礎(chǔ)就不再介紹了,因為之前看到過一篇關(guān)于<canvas>畫布知識的介紹,鏈接如下:
https://mp.weixin.qq.com/s/B3T8ERjAEjlwG6HU_RLEYw
這里再說一下清除畫布。這里需要注意的就是:當畫布的高度或?qū)挾缺恢匦略O(shè)置時, 畫布內(nèi)容就會被清空(還可以利用用 clearRect() 方法也可以清空畫布)。代碼如下:
function clearCanvas()//清空畫布
{
c.height=c.height;
}
三.繪制地球軌道圖
(1)準備畫布
<canvas id="canvas"  width="300" height="300" style="border:1px  solid"></canvas>
(2)調(diào)用畫筆,設(shè)置畫筆顏色等。
這里就是用到了clearRect()方法清除畫布。globalCompositeOperation 屬性設(shè)置或返回如何將一個源(新的)圖像繪制到目標(已有)的圖像上。(源圖像 = 您打算放置到畫布上的繪圖:目標圖像 = 您已經(jīng)放置在畫布上的繪圖)
function  draw() {
//調(diào)用畫筆
var ctx = document.getElementById('canvas').getContext('2d');
ctx.globalCompositeOperation = 'destination-over';
ctx.clearRect(0,0,300,300); //清空畫布
ctx.fillStyle = 'rgba(0,0,0,0)';
ctx.strokeStyle = 'deepskyblue';//指定繪線顏色
ctx.save();//最初狀態(tài)
(3)利用JavaScript開始繪制。首先先創(chuàng)建對象,然后對整個頁面進行初始化。這里要用到動畫命名,采用requestAnimationFrame()方法。這個方法是告訴瀏覽器執(zhí)行動畫,并請求瀏覽器調(diào)用指定的函數(shù)以在下次重繪之前更新動畫。該方法將回調(diào)作為在重繪之前調(diào)用的參數(shù)。注意:如果要在下次重繪時為另一幀設(shè)置動畫,則回調(diào)例程必須自己調(diào)用requestAnimationFrame()。
var sun = new Image();
var earth = new Image();
//對整個頁面的初始化
function  init(){
sun.src = "img/太陽.png";
earth.src ="img/地球.png";
window.requestAnimationFrame(draw);}
(4)畫地球和太陽。這里介紹一下時間的獲取。常用getSeconds()方法獲取秒,它的返回值是一個整數(shù)且在0-59之間。用dateObject()方法獲取毫秒字段,以本地時間顯示。用getMilliseconds()方法獲取毫秒,它的返回值是一個整數(shù)且在 0-999 之間。
//畫地球
ctx.translate(150,150);//畫布原點移動
var time = new Date();
ctx.rotate( ((2*Math.PI)/60)*time.getSeconds()  + ((2*Math.PI)/60000)*time.getMilliseconds() ); //把順時針旋轉(zhuǎn)角度和當前時間的秒和毫秒變化  關(guān)聯(lián)在一起
ctx.translate(105,0);
ctx.fillRect(0,-12,50,24);
ctx.drawImage(earth,-12,-12);//把地球圖形,添加到畫布上
//畫太陽
ctx.drawImage(sun,0,0,300,300);
window.requestAnimationFrame(draw);
(5)繪制軌道
//畫地球旋轉(zhuǎn)軌道
ctx.restore();//最初狀態(tài) (原點沒有移動過)
ctx.beginPath();
ctx.arc(150,150,105,0,Math.PI*2,false); //  Earth orbit,關(guān)聯(lián)關(guān)系,半徑 = 地球相對第二原點(150,150) 向右移動的距離
ctx.stroke();//繪線
END編  輯   |   王楠嵐
責  編   |   劉   連
where2go 團隊
微信號:算法與編程之美
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
高級動畫
用HTML5 實現(xiàn)橡皮擦的涂抹效果的教程
JavaScript動畫實例:曲線的繪制
javascript-HTML5畫布與requestAnimationFrame一起撕裂
清除Canvas
canvas
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服