canvas中通過globalAlpha實現(xiàn)漸隱效果

canvas 想要實現(xiàn)漸隱效果,首先要理解顯示,隱藏效果的原理,
在canvas中怎么實現(xiàn)顯示或者隱藏的效果呢?canvas中提供了一個API:
語法:

 ctx.globalAlpha = number  //值在[0,1]之間, 全局透明度

定義和用法
globalAlpha 屬性設(shè)置或返回繪圖的當(dāng)前透明值(alpha 或 transparency)。
globalAlpha 屬性值必須是介于 0.0(完全透明) 與 1.0(不透明) 之間的數(shù)字。

需要注意,這個API作用于canvas的全局,只要我們使用,canvas上所有的內(nèi)容都會變成相同的透明度

如何來控制它的作用區(qū)間呢?

我們可以使用save 和restore 來實現(xiàn),這兩個屬性通常成對存在,它可以控制在save和restore之間任何的屬性都只作用這兩個內(nèi)容之間,對其他的內(nèi)容沒有影響

 ctx.save();
 ctx.globalAlpha = 0.5;     //此時  畫出的圖片的透明度為0.5
 ctx.drawImage(img,x,y,w,h);     
 ctx.restore();

通過控制globalAlpha的值在0或者1,就可以輕松實現(xiàn)canvas內(nèi)容的顯示和隱藏,那么漸隱效果怎么實現(xiàn)呢,其實只需給它globalAlpha一個變化的生命值life,而它這個值的獲取可以用deltaTime(兩幀時間間隔)進行調(diào)整,使得它隨時間的變化非常的流暢,deltaTime的獲取請參考循環(huán)調(diào)用requestAnimationFrame的使用,我在上一篇文章中有詳細的代碼[http://www.itdecent.cn/p/6101c4dc144c]

var life = 0; //初始狀態(tài)下為0,完全不顯示
var switchy = true; //定義一個開關(guān),可以通過判斷條件進行賦值ture或false
function aliveUpdte(){
            if (switchy) {  //顯示時
                life += 0.2 * deltaTime * 0.01;
                if (life >= 1) {
                    life = 1;
                }

            }else{  //隱藏時
                life -= 0.2 * deltaTime * 0.01;
                if (life <= 0) {
                    life = 0;
                }
            }
        }
//在gameloop中對aliveUpdte()進行調(diào)用,就可以實現(xiàn)漸隱效果啦
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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