【问题标题】:Fade an image in淡入图像
【发布时间】:2012-04-15 16:54:38
【问题描述】:

我正在尝试在画布环境中淡化图像。基本上我想做的是在从左到右移动图像时,我想将它从 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);
    }

欢迎提出任何建议!

【问题讨论】:

  • 有什么特别的原因你没有使用 jQuery?
  • 能否将上下文设置为一个区域,然后修改alpha?
  • 知道 jQuery 是要走的路,为了学习的目的,我想我正在尝试进入并尽可能多地从编码立场中学习......但 jQuery 肯定是在地平线上。跨度>

标签: javascript canvas


【解决方案1】:

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

它展示了如何在画布上下文中加载一个元素,然后如何将它淡入..

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

【讨论】:

    猜你喜欢
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 2016-02-03
    • 1970-01-01
    相关资源
    最近更新 更多