canvas 想要實(shí)現(xiàn)漸隱效果店茶,首先要理解顯示蜕便,隱藏效果的原理,
在canvas中怎么實(shí)現(xiàn)顯示或者隱藏的效果呢贩幻?canvas中提供了一個(gè)API:
語(yǔ)法:
ctx.globalAlpha = number //值在[0,1]之間轿腺, 全局透明度
定義和用法
globalAlpha 屬性設(shè)置或返回繪圖的當(dāng)前透明值(alpha 或 transparency)。
globalAlpha 屬性值必須是介于 0.0(完全透明) 與 1.0(不透明) 之間的數(shù)字丛楚。
需要注意族壳,這個(gè)API作用于canvas的全局,只要我們使用趣些,canvas上所有的內(nèi)容都會(huì)變成相同的透明度
如何來(lái)控制它的作用區(qū)間呢仿荆?
我們可以使用save 和restore 來(lái)實(shí)現(xiàn),這兩個(gè)屬性通常成對(duì)存在,它可以控制在save和restore之間任何的屬性都只作用這兩個(gè)內(nèi)容之間,對(duì)其他的內(nèi)容沒(méi)有影響
ctx.save();
ctx.globalAlpha = 0.5; //此時(shí) 畫(huà)出的圖片的透明度為0.5
ctx.drawImage(img,x,y,w,h)拢操;
ctx.restore();
通過(guò)控制globalAlpha的值在0或者1锦亦,就可以輕松實(shí)現(xiàn)canvas內(nèi)容的顯示和隱藏,那么漸隱效果怎么實(shí)現(xiàn)呢令境,其實(shí)只需給它globalAlpha一個(gè)變化的生命值life杠园,而它這個(gè)值的獲取可以用deltaTime(兩幀時(shí)間間隔)進(jìn)行調(diào)整,使得它隨時(shí)間的變化非常的流暢舔庶,deltaTime的獲取請(qǐng)參考循環(huán)調(diào)用requestAnimationFrame的使用抛蚁,我在上一篇文章中有詳細(xì)的代碼[http://www.reibang.com/p/6101c4dc144c]
var life = 0; //初始狀態(tài)下為0,完全不顯示
var switchy = true; //定義一個(gè)開(kāi)關(guān)栖茉,可以通過(guò)判斷條件進(jìn)行賦值ture或false
function aliveUpdte(){
if (switchy) { //顯示時(shí)
life += 0.2 * deltaTime * 0.01;
if (life >= 1) {
life = 1;
}
}else{ //隱藏時(shí)
life -= 0.2 * deltaTime * 0.01;
if (life <= 0) {
life = 0;
}
}
}
//在gameloop中對(duì)aliveUpdte()進(jìn)行調(diào)用,就可以實(shí)現(xiàn)漸隱效果啦