2015-09-03 3 views
-1

Я пытаюсь сделать двухмерную платформерную игру с использованием javascript и холста HTML5. Работая над генерацией случайного уровня, я столкнулся с проблемой. У меня спрайты отлично работают, но когда я пытаюсь загрузить следующую платформу, старый исчезает. Я решил, что эта проблема будет решена, если я скопирую образ, но я не знаю, как это сделать. Я попытался найти его в google, но большинство сайтов, на которые я пошел, были не очень понятными или были связаны с другой проблемой. Не могли бы вы помочь?Как сделать копию спрайта на холсте HTML5?

+2

Необходим код, показывающий, как хранятся данные. – spynix

+0

Извините, мой код немного смешался. Я буду помнить в следующий раз ... –

ответ

0

Это легкий способ скопировать изображение:

<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 
<canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;"> 
 
Your browser does not support the HTML5 canvas tag.</canvas> 
 

 
<script> 
 

 
var c = document.getElementById("myCanvas"); 
 
var ctx = c.getContext("2d"); 
 
ctx.fillStyle = "red"; 
 
ctx.fillRect(10, 10, 50, 50); 
 

 
function copy() { 
 
    var imgData = ctx.getImageData(10, 10, 50, 50); 
 
    for (var i = 0; i < imgData.data.length; i += 4) { 
 
     imgData.data[i] = 255 - imgData.data[i]; 
 
     imgData.data[i+1] = 255 - imgData.data[i+1]; 
 
     imgData.data[i+2] = 255 - imgData.data[i+2]; 
 
     imgData.data[i+3] = 255; 
 
    } 
 
    ctx.putImageData(imgData, 10, 70); 
 
} 
 

 
</script> 
 

 
<button onclick="copy()">Copy</button> 
 

 
</body> 
 
</html>
Кроме того, для правильной работы «getImageData» с изображениями я должен был начать свою страницу с локального хоста. Если такой путь, как «D: /.../ myPage.html», этот метод не работает.

+0

... или проще: 'ctx.drawImage (c, 10,10,50,50, 10,70,50,50)': https://jsfiddle.net/ m1erickson/3n9y5u2b / – markE

Смежные вопросы