【发布时间】: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