1.初始化畫布
2.再自定義建立80個圓點(數量可自定義),然後初始化
3.然後實現是在一定距離範圍內的圓點兩兩相連,並且運動起來
4.然後實現滑鼠移進出現圓點與裡面的圓點能相連
1.初始化畫布
//2.建立圓與連線(使用建構函式,封裝所有的方法與屬性)初始化畫布
let ele = document.getelementbyid('my_canvas');
ele.width =ele.offsetwidth;
ele.height =ele.offsetheight;
let ctx = ele.getcontext('2d');
function3. 建立80個點,將其初始化,放進陣列儲存,以便移動是可以利用(初始化之後,要呼叫draw方法繪製畫面)random(min,max)
//建立圓(構造器函式)
function
circle(x,y)
//畫圓
this.drawcircle=function
(ctx),$,$,.6)`
ctx.arc(
this.x,this.y,this.radius,0,360);
ctx.fill();
}//畫連線
this.drawline=function
(ctx,_circle) }}
// 建立圓點集合陣列5.實現圓點的自由運動let circles=;
let circlecount=80;
// 初始化circlecount個圓
function init()}}
上面的**,是靜態的畫面(預設draw方法只執行一次),所以只能我們通過手動點選重新整理來改變位置
若想自動更新,可以通過計時器主要是採用requestanimationframe來代替
setinterval
下面的這段**(適用於不同瀏覽器,解決了一些瀏覽器沒有
requestanimationframe這個方法
)
1 window.requestanimationframe =window.requestanimationframe從上面的**,我們可以引申出乙個名詞,叫做墊片(polyfill)->適配不同的瀏覽器缺少某個方法的一段演算法 這段**的作用就是解決一些瀏覽器沒有requestanimationframe這個方法,2 ||window.mozrequestanimationframe
3 ||window.webkitrequestanimationframe
4 ||window.msrequestanimationframe
5 || function
(callback);
像這樣的一段演算法,或者說**,是有名詞來稱呼它的叫做 墊片(polyfill)
該如何使用這個
requestanimationframe
呢??(注:紅字為使用方法)
function6. 實現上面例子中用滑鼠移進的效果draw()
}requestanimationframe(draw);
}
構造出滑鼠實時位置畫圓點的函式
function currentcircle(x,y)注:其中的circle.call(this,x,y)的**call的第乙個引數中是this,由於我們使用}
let currentpoint=
new currentcircle(0,0)
所以this繫結在currentpoint這個物件身上,假設沒有new這個關鍵字,那麼1這個this指向的就是window(在非嚴格模式下)。
call 是能夠改變this指向,表示了this的值從乙個環境傳到另乙個環境。而將乙個物件作為call的第乙個引數,則this將繫結這個物件,也就是currentcircle;其他引數為傳參。
因此,我們可以理解成把circle函式的所有方法和屬性,用到的this都是
currentcircle的方法和屬性。
例子
var a=7;獲取滑鼠實時的位置var obj=
function test()
test() // 結果 7
test.call(obj) // 結果4
**如下:
//draw繪製出滑鼠的效果初始化滑鼠的位置 (這個是物件)
let currentpoint=new currentcircle(0,0);
//滑鼠移進
window.onmousemove= function
(event)
//滑鼠移出
window.onmouseout = function
()
functiondraw()
}// 表示如果滑鼠的位置不為null,就會執行下面的操作
if(currentpoint.x)
}requestanimationframe(draw);
}
1view code2310
1125
26146
147
炒雞簡單的canvas粒子
要說canvas中最精妙的地方,那應該就是對畫素操作的能力了,可能這也就是為什麼作為點陣圖的canvas一直不會被svg比下去的原因了。俗話說,須彌芥子,是大小之說,也有以小見大之說,顆顆粒子,足以構建巨集大效果。這是一篇炒雞簡單的canvas粒子教程,主要是講如何粒子特效的原理,一點運動中的公式。...
關於canvas粒子特效實現分析
個人小站點 1.關於canvas教程可以看了解關於畫線和圓形的相關步驟就行 2.canvas粒子特效要實現的效果 當滑鼠移動時,在滑鼠周圍產生特定的粒子並連線,向四周移動,達到一定條件消失。參考了知乎登入首頁 canvas 粒子動態效果,可配置和乙個少女心滿滿的例子帶你入門 canvas 關於動畫是...
粒子系統的簡單實現
粒子系統說起來高深摸測,其實就是許多許多許多許多許多許多的點圖象,然後對其進行執行速度,方向,衰減的處理。不可少的,先定義一些全域性變數。const intmaxpoint 1000 粒子的個數 float slowdown 2.0f float xspeed 粒子的速度,這裡沒有給出。可以自己加 ...