读书人

canvas 魔兽技巧冷却效果

发布时间: 2012-10-31 14:37:31 作者: rapoo

canvas 魔兽技能冷却效果


function init(){var skills = document.getElementById('skills');skills.addEventListener('click',function(e){          if(e.target.tagName.toUpperCase() == 'CANVAS'){            paint.call(e.target);        }    },false);}function paint(){        if(typeof this.getContext != 'undefined'){        if(this.active)            return;        this.active = true;                var context = this.getContext("2d");    var canvasWidth = this.width,        canvasHeight = this.height,        cx = canvasWidth/2,        cy = canvasHeight/2;                            //画一个半透明的灰色背景        context.beginPath();        context.clearRect(0,0,canvasWidth,canvasHeight);        context.moveTo(0,0);        context.fillStyle = 'rgba(0,0,0,.7)';        context.fillRect(0,0,canvasWidth,canvasHeight);        context.fill();                    var speed = 100,            step = Math.PI/90,            start = 3*Math.PI/2,            begin = start,            end = start + step,            len = this.width > this.height ? this.width:this.height,            r = Math.round(0.8*len);        if(this.getAttribute('sec')){            speed = Math.round(50*this.getAttribute('sec')/9);        }                context.beginPath();        context.moveTo(cx, cy);        context.fillStyle = 'rgb(0,0,0)';        context.globalCompositeOperation = "destination-out";        var that = this;        var timer = null;        var doPaint = function(){            context.arc(cx, cy, r, start, end, false);            context.fill();            start = end;            end = end + step;            if(end - begin > 2*Math.PI){                clearTimeout(timer);                context.globalCompositeOperation = "source-over";                that.active = null;                return;            }             else               timer = setTimeout(doPaint,speed);                    }        doPaint();             }}

读书人网 >Web前端

热点推荐