2016-04-29 3 views
0

Ich weiß, dass Sie Bilder mit ctx.translate() übersetzen können, aber wenn ich es mache, funktioniert es nicht. Ich weiß nicht, was falsch ist. Ich verbrachte solide 2 Stunden damit, es herauszufinden. Hier ist mein Code:Warum kann ich JS Canvas Image nicht übersetzen?

<canvas id="tank_layer" height="1080" width="1920"></canvas> 

var canvas = document.getElementById('tank_layer'), 
    ctx = canvas.getContext('2d') 

document.onkeydown=function(){ 

    ctx.translate(100,150) 
} 
img = new Image(1920, 1080), 
img.src="../tanks/maps/2.png" 

img.onload = function() { 
    ctx.drawImage(img, 0, 0); 
} 
+0

Ich glaube, Sie müssen das Bild neu zu zeichnen nach Übersetzung. Fügen Sie 'ctx.drawImage (img, 0, 0);' innerhalb Ihrer onkeydown-Funktion hinzu – Matt

Antwort

0

Sie müssen Ihr Bild nach der Übersetzung neu zu zeichnen, so fügen Sie die folgende:

document.onkeydown=function(){ 
    ctx.translate(100,150) 
    ctx.drawImage(img,0,0) 
} 

Idee

var counter=0; 

document.onkeydown=function(){ 
    if (counter===0) { 
     ctx.translate(100,150); 
     ctx.drawImage(img,0,0); 
     counter++; 
    } 
} 
+0

Jetzt übersetzt es. Aber es schleift und bewegt das Bild jedesmal 100 Pixel, wenn ich eine Taste drücke. Ich möchte nur, dass es sich einmal an diese Koordinaten bewegt. – Critical

+0

Einzig was ich vorschlagen kann ist ein Zähler/boolean und ein if innerhalb der Funktion nur zu bewegen, wenn false oder counter = 0 – Matt

+0

@Critical sehe mein update – Matt

Verwandte Themen