課程
/前端開發
/Html5
/Canvas繪圖詳解
如何通過定時器實現星星從胖到瘦再到胖的效果?
就是好像讓星星動起來
2018-08-23
源自:Canvas繪圖詳解 3-2
正在回答
對源代碼修改:
function drawStar(cxt,r,R,x,y,color,rot, lineWidth){
cxt.clearRect(0,0,800,800);//? ?<-------------------------在這里清除畫布
cxt.beginPath();
????for (let i = 0; i < 5; i++) {
????????cxt.lineTo(Math.cos((18 + i * 72- rot) / 180 * Math.PI) * R + x,
????????-Math.sin((18 + i * 72 - rot) / 180 * Math.PI) * R + y,
????);
????????cxt.lineTo(Math.cos((54 + i * 72 - rot) / 180 * Math.PI) * r + x,
????????-Math.sin((54 + i * 72 - rot) / 180 * Math.PI) * r + y,
}
cxt.closePath();
cxt.strokeStyle=color;
cxt.lineWidth = lineWidth;//? ?<-------------------這里添加要改變寬度的參數
cxt.stroke();
接下來定義動畫:
function starAnimation( cxt ){? //? ?<-----------在這里定義canvas的畫布對象
var i=5;? //這里是控制動畫的變量
var w=5;? ? //這個是要改變的寬度變量
??setInterval(function () {
????if(i>5){
????????drawStar(cxt, 200, 300, 400, 400, 'red', 30, w+=3);
????????i++;
????}else{
????????drawStar(cxt, 200, 300, 400, 400, 'red', 30, w-=3);
????}
????????if (i > 10) {
????????????i = 1;
????????}
????}, 100);
接下來執行定義好的動畫就OK了
starAnimation(context);? // <-----------傳入? ?var context =canvas.getContext('2d');
舉報
Canvas系列教程第二課,詳解Canvas各接口,讓同學徹底掌握Canvas繪圖
5 回答鼠標點擊在畫布上移動,隨鼠標軌跡周圍畫星星,呵呵
3 回答畫五角星的問題
4 回答為什么明明設置了繪制10棵星星,運行之后,出現滿畫布的星星
1 回答星星出不來?
2 回答為什么和老師的代碼一樣卻畫不出星星,經測試將drawStar()里面的x,y寫成確定的數值可以畫出星星
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-08-27
對源代碼修改:
function drawStar(cxt,r,R,x,y,color,rot, lineWidth){
cxt.clearRect(0,0,800,800);//? ?<-------------------------在這里清除畫布
cxt.beginPath();
????for (let i = 0; i < 5; i++) {
????????cxt.lineTo(Math.cos((18 + i * 72- rot) / 180 * Math.PI) * R + x,
????????-Math.sin((18 + i * 72 - rot) / 180 * Math.PI) * R + y,
????);
????????cxt.lineTo(Math.cos((54 + i * 72 - rot) / 180 * Math.PI) * r + x,
????????-Math.sin((54 + i * 72 - rot) / 180 * Math.PI) * r + y,
????);
}
cxt.closePath();
cxt.strokeStyle=color;
cxt.lineWidth = lineWidth;//? ?<-------------------這里添加要改變寬度的參數
cxt.stroke();
}
接下來定義動畫:
function starAnimation( cxt ){? //? ?<-----------在這里定義canvas的畫布對象
var i=5;? //這里是控制動畫的變量
var w=5;? ? //這個是要改變的寬度變量
??setInterval(function () {
????if(i>5){
????????drawStar(cxt, 200, 300, 400, 400, 'red', 30, w+=3);
????????i++;
????}else{
????????drawStar(cxt, 200, 300, 400, 400, 'red', 30, w-=3);
????????i++;
????}
????????if (i > 10) {
????????????i = 1;
????????}
????}, 100);
}
接下來執行定義好的動畫就OK了
starAnimation(context);? // <-----------傳入? ?var context =canvas.getContext('2d');