web學習(1)--粒子發生器(web入門)
博主也是剛剛開始學習web網頁製作,先推薦一個學習web的好地方http://www.w3school.com.cn,裡面HTML,CSS,JavaScript都有詳細的教程。
先上一個效果圖:(這是個動圖,泡泡會往四周擴散)
由於是初學,所以註釋很詳細,上程式碼:
HTML:(注意js檔案的名字和所放位置,如果和我命名的不一樣,注意在第六行修改)
<!DOCTYPE html> <!--瀏覽器獲知文件型別為HTML5-->
<html>
<head>
<meta charset="utf-8" /> <!--編碼格式-->
<title>粒子發生器</title>
<script src="js/index.js"></script> <!--引入js--> <!--注意js檔案的名字-->
<style> /*定義樣式*/
#cns1{
border: 1px solid red;
}
</style>
</head>
<body>
<canvas id="cns1" width="500px" height="500px"></canvas> <!--canvas畫布-->
</body>
<script>
var Game=new Pupple(document.querySelector("#cns1")); //獲取CSS選擇器的畫布元素 並new一個粒子發生器的物件出來(即例項化)
</script>
</html>
JavaScript:
var Model=function(canvas){ //傳參 畫布
var me=this;
me.puppleArr=new Array(); //泡泡陣列
me.puppleNum=100; //泡泡個數
me.canvas=canvas; //獲取畫布元素
me.context=canvas.getContext('2d'); //獲取用於在畫布上繪圖的環境
for(var i=0;i<me.puppleNum;i++){
me.puppleArr.push(me.genPupple()); //將泡泡屬性新增到陣列
}
me.shake(); //泡泡發射(移動)
}
Model.prototype.genPupple=function(){ //使用 prototype 屬性來向物件新增屬性
return { //返回泡泡的各種屬性
radius:Math.random()*10,//半徑
v:Math.random()*100, //速度
r:Math.random()*255|0, //|0是取整 random()是0~1之間的隨機數
g:Math.random()*255|0,
b:Math.random()*255|0, //r g b 三原色
a:Math.random(), //透明度
angle: Math.PI*Math.random()*2, //泡泡移動方向
x:this.canvas.width/2, //泡泡位置座標
y:this.canvas.height/2,
}
}
Model.prototype.shake=function(){ //使用 prototype 屬性來向物件新增屬性
var me=this;
var ctx=me.context;
foo(); //繪製到畫布上
function foo(){
ctx.clearRect(0,0,me.canvas.width,me.canvas.height); //清空畫布
for(var i=0;i<me.puppleNum;i++){
var o=me.puppleArr[i];
ctx.fillStyle="rgba("+o.r+","+o.g+","+o.b+","+o.a+")"; //設定繪製顏色及透明度
ctx.beginPath(); //開始繪製
ctx.arc(o.x,o.y,o.radius,0,360,false); //繪製一個圓
ctx.fill(); //填充顏色
ctx.closePath(); //結束繪製
o.x += (o.v ) * Math.cos(o.angle)*0.03; //泡泡位置移動
o.y += (o.v ) * Math.sin(o.angle)*0.03;
o.a -= 0.01; //透明度逐漸降低
if(o.a<=0){ //透明度降低至0時(肉眼看不見了),便重置泡泡的各種屬性
me.puppleArr[i]=me.genPupple();
}
}
setTimeout(foo,30); //每隔30ms繪製一次
}
}
window.Pupple = Model;
相關文章
- java web 動態web開發基礎入門學習 eclipse版(二)JavaWebEclipse
- 入門 Web前端需要學習哪些技術?Web前端
- go實戰web入門學習筆記GoWeb筆記
- web前端開發入門,學習路徑以及具體的學習內容Web前端
- Web前端入門的學習路線總結Web前端
- CTF web安全45天入門學習路線Web
- Python入門之web2py框架學習!PythonWeb框架
- Web入門Web
- Web前端開發零基礎入門學習路線圖Web前端
- Web閱讀器開發系列教程(入門篇)Web
- Web開發學習Web
- CTF入門學習3->Web通訊基礎Web
- CTF入門學習2->Web基礎瞭解Web
- Web 開發學習筆記(1) — 搭建你的第一個 Web ServerWeb筆記Server
- web前端入門到實戰:H5-canvas實現粒子時鐘Web前端H5Canvas
- ctfshow web入門之web259Web
- web前端開發怎麼入門?Web前端
- Web 前端開發之小白入門Web前端
- 每天成長一點---WEB前端學習入門筆記Web前端筆記
- 現在學習網路安全來得及嗎?web安全入門學習Web
- 大專學歷可以學網路安全嗎?學習web安全入門Web
- Go Web 程式設計入門--深入學習用 Go 編寫 HTTP 伺服器GoWeb程式設計HTTP伺服器
- 教你入門Web ServiceWeb
- Web開發初探之JavaScript 快速入門WebJavaScript
- MDN之學習 Web 開發(一)【Web API簡介】WebAPI
- Go Web 程式設計入門--路由器GoWeb程式設計路由器
- 前端基礎學習1 | Web、Html、CSS前端WebHTMLCSS
- 【JAVA Web基礎學習】Day1JavaWeb
- CTFshow-web入門(1-20)-資訊蒐集Web
- `.NET Web`新人入門必學專案`EarthChat`Web
- 入門Web前端要學哪些主流框架呢?Web前端框架
- 【Web】Web 階段學習筆記Web筆記
- web前端開發怎麼樣學習?看這份web前端學習路線Web前端
- Web前端如何學?Web前端學習方法分享Web前端
- Flutter For Web入門實戰FlutterWeb
- CTFSHOW-WEB入門 writeupWeb
- Java:Web Service初入門JavaWeb
- 「譯」Web安全快速入門Web
- JSON Web Token 入門教程JSONWeb