私は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を使用して、image.srcではなくDOMにロードしようとしましたが、すべて同じ問題があります.
ちなみに最新のChromeを使用しています。
SetTimeout へのフェイルオーバーを使用してさまざまなブラウザーを処理する requestionAnimationFrame のセットアップを次に示します。
(!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>
これがこのコードのすべてです。