淡入淡出图像

时间:2012-04-02 00:11:15

标签: javascript canvas

我试图在画布环境中淡化图像。 Essientially我想要做的是在从左到右移动图像时,我想将其从0%alpha淡化到100%alpha。当我在我的代码中评论globalAlpha和alpha信息时,它会像我想要的那样移动,我唯一的问题就是让它褪色。我能够使globalAlpha函数工作,但它会影响画布区域中的所有艺术作品。有没有办法可以影响一个元素?最终我想基于计时器在动画中的不同时间淡入多个元素,但如果我能先让它工作,我可以从那里开始。

window.addEventListener('load', eventWindowLoaded, false);
function eventWindowLoaded() 
{
    canvasApp();
}
function canvasSupport () 
{
    return Modernizr.canvas;
}
function canvasApp()
    {
        if (!canvasSupport()) 
        {
            return;
        }



        var pointImage = new Image();
        pointImage.src = "images/barry.png";
        var barry = new Image();
        barry.src = "images/barry.png";
        /*var alpha = 0;
        context.globalAlpha = 1;*/

        function drawScreen() 
        {

            //context.globalAlpha = 1;
            context.fillStyle = '#EEEEEE';
            context.fillRect(0, 0, theCanvas.width, theCanvas.height);
            //context.globalAlpha = alpha;

            //Box
            context.strokeStyle = '#000000';
            context.strokeRect(1, 1, theCanvas.width-2, theCanvas.height-2);


            if (moves > 0 ) 
            {
                moves--;
                ball.x += xunits;
                ball.y += yunits;
            }



            context.drawImage(barry, ball.x, ball.y);

            /*context.restore();
            alpha += .1;
            if (alpha > 1)
            {
                alpha = 0;
            }*/


        }

        var speed = 1;
        var p1 = {x:20,y:250};
        var p2 = {x:40,y:250};
        var dx = p2.x - p1.x;
        var dy = p2.y - p1.y;
        var distance = Math.sqrt(dx*dx + dy*dy);
        var moves = distance/speed;
        var xunits = (p2.x - p1.x)/moves;
        var yunits = (p2.y - p1.y)/moves;
        var ball = {x:p1.x, y:p1.y};
        var points = new Array();
        theCanvas = document.getElementById("canvas");
        context = theCanvas.getContext("2d");
        ctx = theCanvas.getContext("2d");
        setInterval(drawScreen, 10);
    }

欢迎任何建议!

1 个答案:

答案 0 :(得分:0)

我认为这个问题会给你一个方法。

它显示了如何在画布上下文中加载元素,然后如何在...中淡化它。

How to change the opacity (alpha, transparency) of an element in a canvas element after it has been drawn?