課程
/前端開發(fā)
/HTML/CSS
/HTML5小游戲---愛心魚(上)
麻煩詳細解釋一下教程里面畫??拇a
2016-04-27
源自:HTML5小游戲---愛心魚(上) 2-3
正在回答
畫海葵的代碼:
aneObj.prototype.draw=function()
{
????ctx2.save();????ctx2.globalAlpha=0.6;?? ?ctx2.lineWidth=20;?? ?ctx2.lineCap="round";?? ?ctx2.strokeStyle="#3b154e";?? ?for(var i=0;i<this.num;i++)
????{
????????????ctx2.beginPath();
????????????ctx2.moveTo(this.x[i],canHeight);
????????????ctx2.lineTo(this.x[i],canHeight-this.len[i]);
????????????ctx2.stroke();
?? }?? ?ctx2.restore();}
代碼的解釋:
1,在for循環(huán)前后加上兩個API——ctx2.save();和ctx2.restore();這一對API是什么用處呢??? ??? ??? ?意思就是告訴畫布,告訴場景,在這兩個API之間的樣式定義只在這兩個API之間起作用。?? ??? ??? ?一旦出去這個restore呢,其他的樣式還是會被恢復的,
2,ctx2.globalAlpha=0.6;定義??耐该鞫取?/p>
3,ctx2.lineWidth=20;定義??膶挾取?/p>
4,ctx2.lineCap="round";就是畫完??Y(jié)尾是一個圓帽狀的結(jié)尾。
5,ctx2.strokeStyle="#3b154e";設置??念伾?,暗粉色。
6,?ctx2.beginPath();告訴ctx2要開始繪制一個路徑了。其中ctx2就是畫筆,也就是場景。
7,ctx2.moveTo(this.x[i],canHeight);從(this.x[i],canHeight)這個坐標開始繪制???。其中this.x[i]是x軸坐標,
????????canHeight是y軸坐標。
8,?ctx2.lineTo(this.x[i],canHeight-this.len[i]);繪制到什么地方結(jié)束,就是繪制到這個坐標處結(jié)束,
????????這個坐標是(this.x[i],canHeight-this.len[i]),其中this.x[i]是x軸坐標,?canHeight-this.len[i]是y軸坐標。
9,ctx2.stroke();繪制??膭幼?。前面定義的都是畫??奈恢谩㈩伾?、寬度。形狀。這一句是真正開始畫了。
10,ctx2.globalAlpha=0.6;?? ?ctx2.lineWidth=20;?? ?ctx2.lineCap="round";?? ?ctx2.strokeStyle="#3b154e";這4行代碼放在for循環(huán)外面的意思是這樣的:因為這4個定義的都是??姆菍嵸|(zhì)屬性,就是沒有這4行,也能繪制???,只是繪制出的海葵,沒有透明度,沒有寬度,尾部不是圓形的,顏色不是暗粉色的,也就是說:沒有必要每次執(zhí)行for循環(huán)的時候去執(zhí)行這4條代碼,這就精簡了代碼量,提高了效率。
??????
????
???????
舉報
學做HTML5游戲,輕輕松松帶你上手,適合剛?cè)胧钟螒蜷_發(fā)的同學
1 回答aneObj對象里的this.x指向哪里?
2 回答對象不支持LineTo的方法如何解決
2 回答關于fruit.num
1 回答為什么要把對象定義成一個函數(shù)?
2 回答關于海葵~
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關注慕課網(wǎng)微信公眾號
2016-06-23
畫海葵的代碼:
aneObj.prototype.draw=function()
{
????ctx2.save();
????ctx2.globalAlpha=0.6;
?? ?ctx2.lineWidth=20;
?? ?ctx2.lineCap="round";
?? ?ctx2.strokeStyle="#3b154e";
?? ?for(var i=0;i<this.num;i++)
????{
????????????ctx2.beginPath();
????????????ctx2.moveTo(this.x[i],canHeight);
????????????ctx2.lineTo(this.x[i],canHeight-this.len[i]);
????????????ctx2.stroke();
?? }
?? ?ctx2.restore();
}
代碼的解釋:
1,在for循環(huán)前后加上兩個API——ctx2.save();和ctx2.restore();這一對API是什么用處呢?
?? ??? ??? ?意思就是告訴畫布,告訴場景,在這兩個API之間的樣式定義只在這兩個API之間起作用。
?? ??? ??? ?一旦出去這個restore呢,其他的樣式還是會被恢復的,
2,ctx2.globalAlpha=0.6;定義??耐该鞫取?/p>
3,ctx2.lineWidth=20;定義??膶挾取?/p>
4,ctx2.lineCap="round";就是畫完??Y(jié)尾是一個圓帽狀的結(jié)尾。
5,ctx2.strokeStyle="#3b154e";設置??念伾?,暗粉色。
6,?ctx2.beginPath();告訴ctx2要開始繪制一個路徑了。其中ctx2就是畫筆,也就是場景。
7,ctx2.moveTo(this.x[i],canHeight);從(this.x[i],canHeight)這個坐標開始繪制???。其中this.x[i]是x軸坐標,
????????canHeight是y軸坐標。
8,?ctx2.lineTo(this.x[i],canHeight-this.len[i]);繪制到什么地方結(jié)束,就是繪制到這個坐標處結(jié)束,
????????這個坐標是(this.x[i],canHeight-this.len[i]),其中this.x[i]是x軸坐標,?canHeight-this.len[i]是y軸坐標。
9,ctx2.stroke();繪制??膭幼?。前面定義的都是畫??奈恢谩㈩伾?、寬度。形狀。這一句是真正開始畫了。
10,ctx2.globalAlpha=0.6;
?? ?ctx2.lineWidth=20;
?? ?ctx2.lineCap="round";
?? ?ctx2.strokeStyle="#3b154e";這4行代碼放在for循環(huán)外面的意思是這樣的:因為這4個定義的都是??姆菍嵸|(zhì)屬性,就是沒有這4行,也能繪制???,只是繪制出的海葵,沒有透明度,沒有寬度,尾部不是圓形的,顏色不是暗粉色的,也就是說:沒有必要每次執(zhí)行for循環(huán)的時候去執(zhí)行這4條代碼,這就精簡了代碼量,提高了效率。
??????
????
???????