Ich möchte einen Bildrutscheneffekt mit HTML5-Canvas machen. Ich kann das Bild "verschieben", indem ich die Leinwand übersetze und das Bild neu zeichne. Während des Dias wird die Leinwand jedoch gelöscht, und die linke Seite des neu gezeichneten Bildes verursacht etwas Flackern entlang der linken Seite des Bildes. Hier ist ein Demo-Link: http://codepen.io/make2514/pen/rLQwbz. Unten ist mein Skript für die Leinwand:Animation ist nicht sehr glatt, wenn Sie einen Bildrutscheneffekt mit HTML-Canvas machen
var img = new Image();
var imgLoaded = false;
img.src = "http://in5d.com/wp-content/uploads/2014/11/SHMNTYMETM.jpg"
img.onload = function(){
imgLoaded = true;
};
var canvas = document.querySelector('canvas');
function play() {
push(canvas, img, function() {
console.log('done');
});
}
function push (canvas, canvasIn) {
var ctx = canvas.getContext('2d');
ctx.clearRect(0, 0, canvas.width, canvas.height);
if (imgLoaded) {
ctx.translate(5, 0);
}
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
window.requestAnimationFrame(function() {
push(canvas, img);
});
}
Ich versuche, die x-Achse Leinwand Übersetzung kleineren Wert zu reduzieren, aber das Flackern ist immer noch da.
Ich würde wirklich jeden Vorschlag zu schätzen wissen!
Vielen Dank für Ihre Eingabe! Könntest du einige Änderungen vorschlagen, die ich machen könnte, um den Flackereffekt zu beheben, der immer noch auf der linken Seite des Bildes bleibt? – make2514
Anstatt eine feste Schrittgröße von 5px für die Übersetzung zu verwenden, können Sie stattdessen eine Länge der Zeit für die Animation verwenden und die Schrittgröße aus jedem Bild extrapolieren oder JavaScript und die Zeichenfläche vollständig abbrechen und mit einer CSS3-Animation gehen. – kamoroso94
Ich glaube, der flackernde Effekt ist von 5px jedes Bild springen. Wenn Sie beispielsweise 1px versuchen, wäre der Effekt weniger ausgeprägt. – kamoroso94