Я новичок в html5 и мне было интересно, если кто-то может пролить некоторый свет на это:html5 getImageData затем результаты putImageData в выцветания изображений
<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 немного меняется каждый раз, когда он либо считывается, либо записывается на холст ...
В принципе, я хотел, чтобы изображение исчезло, когда была указана мышь так что фоновое изображение отображается, когда мышь перемещается. Есть ли способ обойти это, или мне придется стать немного более творческим в этом процессе? Есть ли в любом случае я могу манипулировать «image» ImageData, а не получать его из холста каждый раз?
Заранее спасибо, я пробовал использовать jpg и png и загружать в DOM, а не через image.src, но все они имеют одинаковую проблему.
Использование новейшей технологии кГц.
Вот настройки для 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>
Это весь код для это.
, если вы читаете эту статью я предоставил вам, возможно, заметили ваш недостающий указатель кадра. –
Мне не хватает указателя на фрейм, как я уже сказал, что для окна больше. Window.requestAnimationFrame, который не включен в код выше, поскольку я не считаю его актуальным. Это не проблема латентности - прочитайте симптомы, которые я испытываю - у меня есть сложная анимация частиц, запускающая этот самый код, и они работают отлично - это как-то связано с изменением данных изображения между getImageData и putImageData, на которые я верю. Заметьте, что я говорю, что «этот код ничего не должен делать!» (если он работает правильно), то почему изображение быстро ухудшается с течением времени? – Rob
@Rob, я не могу воссоздать проблему на FF14.0, вы можете скриптировать реальный код? и какой браузер вы используете? Я заметил сбой с одним из моих png-файлов. может стоить попробовать с другим изображением! –