【发布时间】:2012-06-10 08:12:40
【问题描述】:
我对 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>
这就是所有的代码。
【问题讨论】:
标签: html html5-canvas getimagedata putimagedata