戰(zhàn)斗力屬性圖canvas筆記

本文介紹了六邊形戰(zhàn)斗力屬性圖繪制,涉及知識點canvas

由于正多邊形是十分規(guī)則的,所以感覺很輕易就可以用h5 canvas來實現(xiàn),首先在里畫一個canvas,id="polygon"。

<canvas id ="polygon"><canvas>

等待頁面加載完畢后開始繪制。函數(shù)polygon傳入幾個參數(shù):canvas對象,多邊形邊數(shù),顏色漸變層數(shù),各項能力值(數(shù)組),各項能力的名稱(數(shù)組),調(diào)用polygon就能繪制出想要的能力屬性圖啦。

(function(){

varhex=document.getElementById("polygon");

varability_value=[];

varability_name=[];

//設(shè)置能力值

ability_value[0]=0.8;

ability_value[1]=0.5;

ability_value[2]=0.7;

ability_value[3]=0.6;

ability_value[4]=0.5;

ability_value[5]=0.7;

//設(shè)置能力屬性名

ability_name[0]="物理";

ability_name[1]="魔法";

ability_name[2]="韌性";

ability_name[3]="敏捷";

ability_name[4]="防御";

ability_name[5]="智力";

polygon(hex,6,6,ability_value,ability_name);

})();

//繪制多邊形能力圖

function polygon(obj, side, part, ability_value, ability_name){

var ability = obj.getContext('2d');? ? ? ? ? ??

ability.canvas.width = window.innerWidth*0.7;? ? ? ? ? ?

?ability.canvas.height = window.innerWidth*0.7;

var width = obj.width;

var height = obj.height;

var xCenter = width *0.5;

var yCenter = height *0.5;

var radius = width *0.3;

var space = radius/part;

var theta =Math.PI*2/side;

//繪制漸變多邊形底層

for(varj=part;j>=1;j--){

ability.beginPath();

for(vari=0;i<=side;i++){

ability.lineTo(Math.cos(i*theta)*space*j+xCenter,-Math.sin(i*theta)*space*j+yCenter)

}

varr=73,g=101,b=115;

ability.fillStyle="rgba("+73+","+101+","+115+","+0.4+")";

ability.fill();

ability.closePath();

}

//繪制能力多邊形

ability.beginPath();

for(vari=0;i<=side;i++){

varx=Math.cos(i*theta)*radius*ability_value[i%side]+xCenter;

vary= -Math.sin(i*theta)*radius*ability_value[i%side]+yCenter;

ability.lineTo(x,y);

}

ability.strokeStyle="rgba(255,255,96,1)";

ability.lineWidth=4;

ability.stroke();

ability.closePath();

//繪制字體for (var i=0; i

ability.fillStyle="rgba(0,0,0,1)";

ability.font="normal 15px Arial";

if(Math.cos(i*theta)*radius>0) {

varx=Math.cos(i*theta)*radius+3+xCenter;

vary= -Math.sin(i*theta)*radius*1.3+yCenter;

}else{

varx=Math.cos(i*theta)*radius*1.5+xCenter;

vary= -Math.sin(i*theta)*radius*1.3+yCenter;

}

ability.fillText(ability_name[i],x,y);

}

參考文獻:http://www.codes51.com/article/detail_167821.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 《ijs》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 5,644評論 0 7
  • 2014年的蘋果全球開發(fā)者大會(WWDC),當Craig Federighi向全世界宣布“We have new ...
    yeshenlong520閱讀 2,402評論 0 9
  • 我承認我是一個感性的人,但我的感性只給我自己,誰都不想給。
    jiangwha閱讀 219評論 0 0
  • 文/玫公子 題圖/網(wǎng)絡 編輯/微微@PentaQ 我叫自己為:"榮耀行刑官"。我很喜歡這個外號,我也很享受每次的追...
    PentaQ刺猬電競社閱讀 450評論 0 0
  • 在月色里鳧游 水很淺 所以還能夠 一步一踟躕 水又很深 那窒息的渴切 是用力在昏黃的月色里捕捉你 轉(zhuǎn)瞬即逝的柔情 ...
    山谷等風閱讀 4,039評論 0 1

友情鏈接更多精彩內(nèi)容