#raphael #typescript
#рафаэль #машинописный текст
Вопрос:
Я пытаюсь изучить (разработать) какую-то игру, используя HTML5 и TypeScript. Я пишу эту часть кода:
class GameMap {
private sheet: RaphaelPaper;
private tiles: Tile[];
constructor() {
this.tiles = [];
this.sheet = Raphael(document.getElementById('canvas_container'), 500, 500);
}
render() {
var tileWidth = 20;
var tileHeight = 20;
for (var i = 0; i < 30; i ) {
for (var j = 0; j < 30; j ) {
this.tiles.push(new Tile(i, j));
var rectangle = this.sheet.rect(i * tileWidth, j * tileHeight, tileWidth, tileHeight);
rectangle.hover(this.tileMouseOn(), this.tileMouseOut(), rectangle, rectangle);
}
}
}
tileMouseOn() {
this.attr({ 'stroke-width': 1 });
}
tileMouseOut() {
this.attr({ 'stroke-width': 0 });
}
}
Проблема в rectangle.hover()
функции. Я получаю следующую ошибку:
Supplied parameters do not match any signature of call target:
Could not apply type 'Function' to argument 1 which is of type 'void'.
Что не так с этой функцией?
Ответ №1:
hover()
ожидается, что в качестве 2-х первых аргументов будет ссылка на функцию. Попробуйте с этим :
rectangle.hover(this.tileMouseOn, this.tileMouseOut, rectangle, rectangle);
Комментарии:
1. Красиво 🙂 Большое спасибо. Я перепробовал все, кроме этого «делегирования»: P