Вызов функции внутри функции

#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