我对 Html5 很陌生,我想知道是否有人可以对此有所了解:
<script type="text/javascript">
window.onload = function () {
var canvas = document.getElementById('canvas'); //682 x 111 pixel canvas
var context = canvas.getContext('2d');
var image = new Image();
image.src = "/Content/ImageTestOne/logo-for-dissolve.png"; //682 x 111 pixel image
image.onload = function () { context.drawImage(image, 0, 0); drawFrame(); };
function drawFrame() {
window.requestAnimationFrame(drawFrame, canvas);
imageData = context.getImageData(0, 0, canvas.width, canvas.height);
//Do something to some pixels here that persists over time
context.clearRect(0, 0, canvas.width, canvas.height);
context.putImageData(imageData, 0, 0);
};
};
</script>
根据我对 Html5 的有限知识,除了不断显示“图像”之外,这段代码应该什么都不做。但是相反,图像很快就烧成了几乎白色,这表明每次从画布读取或写入画布时,imageData 都会发生轻微变化......
基本上我想淡化鼠标所在的图像,以便在鼠标移动时显示背景图像。有没有办法解决这个问题,还是我必须在这个过程中变得更有创意?无论如何我可以操纵“图像” ImageData 而不是每次都从画布上获取它?
在此先感谢,我尝试使用 jpg 和 png 并加载到 DOM 而不是通过 image.src 但它们都有相同的问题。
顺便说一句,使用最新的 Chrome。
这是 requestionAnimationFrame 的设置,用于处理故障转移到 SetTimeout 的一系列浏览器:
(!window.requestAnimationFrame)
{
window.requestAnimationFrame = (window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function (callback) {
return window.setTimeout(callback, 1000/60);
});
}
这是画布的代码
<canvas id="canvas" width="682" height="111"></canvas>
这就是所有的代码。