canvas繪制的直線動(dòng)畫
話不多說,請看代碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>first line</title>
<style type="text/css">
body{
background: #456E89;
}
.canvas {
height: 300px;
width: 300px;
margin: 0 auto;
font-family: arial;
}
</style>
</head>
<body>
<div class="canvas">
<canvas id="cvs" width="300" height="300"></canvas>
</div>
<script type="text/javascript">
var cvs = document.getElementById("cvs").getContext("2d");
function Anim(opt) { //初始化值
this.opt = opt;
}
//node 表示畫布節(jié)點(diǎn)
//staX 表示開始x坐標(biāo)
//staY 表示開始y坐標(biāo)
//len表示終點(diǎn)坐標(biāo),
//timing表示運(yùn)行的間隔時(shí)間,
//num表示坐標(biāo)增長的大小
//direc表示判斷繪制線條的方向,false表示X軸,ture表示Y軸
//lw表示線寬的大小
//color 表示繪制線條顏色
Anim.prototype.draw = function() { //繪制直線的線條
var opt = this.opt; //設(shè)置對象的屬性
var adx = opt.staX;
var ady = opt.staY;
var that = {
x: opt.staX,
y: opt.staY
};
var Time = setInterval(function() {
opt.direc //判斷繪制方向
?
opt.len > ady ? ady += opt.num : ady -= opt.num :
opt.len > adx ? adx += opt.num : adx -= opt.num;
if(adx == opt.len || ady == opt.len) { //停止循環(huán)
clearInterval(Time);
}
opt.Node.beginPath(); // 開始繪制線條
opt.Node.moveTo(that.x, that.y);
opt.Node.lineTo(adx, ady);
opt.Node.lineWidth = opt.lw || 1;
opt.Node.strokeStyle = opt.color;
opt.Node.stroke();
}, opt.timing);
};
Anim.prototype.txt = function(opc) {//繪制文字
cvs.beginPath();
cvs.fillStyle = "rgba(255,255,255,"+opc+")";
cvs.font = "200px arial";
cvs.fillText("L", 100, 200);
};
var line1 = new Anim({ //實(shí)例
Node: cvs,
color: "#fff",
staX: 114,
staY: 58,
len: 134,
timing: 50,
num: 1,
direc: false,
lw: 2
});
line1.draw(); //執(zhí)行繪制
var line2 = new Anim({
Node: cvs,
color: "#fff",
staX: 115,
staY: 58,
len: 200,
timing: 20,
num: 1,
direc: true,
lw: 2
});
line2.draw();
var line3 = new Anim({
Node: cvs,
color: "#fff",
staX: 133,
staY: 184,
len: 58,
timing: 20,
num: 1,
direc: true,
lw: 2
});
line3.draw();
var line4 = new Anim({
Node: cvs,
color: "#fff",
staX: 132,
staY: 184,
len: 203,
timing: 35,
num: 1,
direc: false,
lw: 2
});
line4.draw();
var line5 = new Anim({
Node: cvs,
color: "#fff",
staX: 203,
staY: 199,
len: 115,
timing: 35,
num: 1,
direc: false,
lw: 2
});
line5.draw();
var line6 = new Anim({
Node: cvs,
color: "#fff",
staX: 203,
staY: 199,
len: 184,
timing: 50,
num: 1,
direc: true,
lw: 2
});
line6.draw();
var test = new Anim();//繪制文字實(shí)例
setTimeout(function () {
var num = 0;
var times = setInterval(function () {
num++;
var t = num/100;
if(t === 1){
clearInterval(times);
}
test.txt(t);
},50)
},3000)
</script>
</body>
</html>
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
ES6中async函數(shù)與await表達(dá)式的基本用法舉例
async和await是我們進(jìn)行Promise時(shí)的一個(gè)語法糖,async/await為了讓我們書寫代碼時(shí)更加流暢,增強(qiáng)了代碼的可讀性,下面這篇文章主要給大家介紹了關(guān)于ES6中async函數(shù)與await表達(dá)式的基本用法,需要的朋友可以參考下2022-07-07
使用PBFunc在Powerbuilder中支付寶當(dāng)面付款功能
這篇文章主要介紹了使用PBFunc在Powerbuilder中支付寶當(dāng)面付款功能的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10
fetch 如何實(shí)現(xiàn)請求數(shù)據(jù)
這篇文章主要介紹了fetch 如何實(shí)現(xiàn)請求數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
微信小程序onLaunch異步,首頁onLoad先執(zhí)行?
這篇文章主要介紹了微信小程序onLaunch異步,首頁onLoad先執(zhí)行? 文章底部給大家介紹了小程序_onLaunch異步回調(diào)數(shù)據(jù)加載問題的兩種解決方案,需要的朋友可以參考下2018-09-09
window.open以post方式將內(nèi)容提交到新窗口
最近在做web項(xiàng)目,碰到需要跨頁面?zhèn)鬟f參數(shù)的功能,就是那種需要把當(dāng)前頁面的內(nèi)容帶到新開的子窗體中,以前的做法是傳一個(gè)id過去,然后在新窗口中去讀數(shù)據(jù)庫的內(nèi)容;比較有意思的是直接通過調(diào)用form的submit方法不能觸發(fā)onsubmit事件,查看了幫助文檔,必須手動(dòng)的觸發(fā),否則只能看到頁面刷新而沒有打開新窗口2012-12-12
JavaScript判斷是否為數(shù)字的4種方法及效率比較
這篇文章主要介紹了JavaScript判斷是否為數(shù)字的4種方法及效率比較,本文直接給出判斷方法實(shí)現(xiàn)代碼及運(yùn)行效率效果圖,方便大家選擇使用,需要的朋友可以參考下2015-04-04
一個(gè)JavaScript去除字符串末尾的空白實(shí)例代碼
這是一個(gè)JavaScript去除字符串末尾的空白實(shí)例代碼,很簡單,但很實(shí)用,喜歡的朋友可以參考下2014-09-09
javaScript產(chǎn)生隨機(jī)數(shù)的用法小結(jié)
這篇文章主要介紹了javaScript產(chǎn)生隨機(jī)數(shù)的用法小結(jié),包括JavaScript Math.random()內(nèi)置函數(shù) ,Js 隨機(jī)數(shù)產(chǎn)生6位數(shù)字的代碼,需要的朋友可以參考下2018-04-04
Android 自定義view仿微信相機(jī)單擊拍照長按錄視頻按鈕
這篇文章主要介紹了Android 自定義view仿微信相機(jī)單擊拍照長按錄視頻按鈕,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-07-07

