Почему я не рисую изображение на холсте? - PullRequest
0 голосов
/ 10 мая 2018

Нет ошибок, ничего. Но изображение все еще не появляется. Когда я console.log(background); я вижу src изображения в консоли, примерно так <img src="ground.png">. Вот код:

Html:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Pirate</title>
    <link rel="stylesheet" type="text/css" href="style.css">
  </head>
  <body>
    <canvas id="canvas" width="480" height="240"></canvas>
  <script src="./script.js"></script>
  </body>
</html>

JS:

var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");

var StyleSheet = function(image, width, height) {
  this.image = image;
  this.width = width;
  this.height = height;

  this.draw = function(image, sx, sy, swidth, sheight, x, y, width, height) {
    context.drawImage(image, sx, sy, swidth, sheight, x, y, width, height);
  }
}

var Loader = function(src) {
  this.image = new Image();
  this.image.src = src;
  return this.image;
}

var background = new Loader("ground.png");
console.log(background);
var sprite = new StyleSheet(background, 50, 50);
  sprite.draw(background, 0, 0, 16, 16, 0, 0, 50, 50);

1 Ответ

0 голосов
/ 10 мая 2018

Попробуйте вызвать draw на событии загрузки изображения, как показано ниже

var canvas = document.getElementById("canvas");
	var context = canvas.getContext("2d");

	var StyleSheet = function(image, width, height) {
	  this.image = image;
	  this.width = width;
	  this.height = height;

	  this.draw = function(image, sx, sy, swidth, sheight, x, y, width, height) {
		image.onload = function(){
			context.drawImage(image, sx, sy, swidth, sheight, x, y, width, height);
		}
		
	  }
	}

	var Loader = function(src) {
	  this.image = new Image();
	  this.image.src = src;
	  return this.image;
	}

	var background = new Loader("https://pbs.twimg.com/profile_images/902653914465550336/QE3287ZJ_400x400.jpg");
	console.log(background);
	var sprite = new StyleSheet(background, 50, 50);
	  sprite.draw(background, 0, 0, 16, 16, 0, 0, 50, 50);
 <canvas id="canvas" width="480" height="240" style="border:1px solid #000000;"></canvas>

Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...