Как увеличить количество спрайтов в массиве? - PullRequest
0 голосов
/ 04 ноября 2019

Итак, у меня есть строковый массив со спрайтами, которые я хочу отобразить:

var lts = [
    "letterA",
    "letterB",
    "letterC",
    "letterD",
    "letterE",
    "letterF"
];

в моем assets.js Я загружаю их:

function loadAssets(callback){

    function loadSprite(fileName){
        assetsStillLoading++;

        let spriteImage = new Image();
        spriteImage.src = "assets/sprites/" + fileName;

        spriteImage.onload = function()
        {
            assetsStillLoading--;
        }

        return spriteImage;
    }
    sprites.background = loadSprite('spr_background_pink.png');

    sprites.letterA = loadSprite('/Letters/letter_A.png');
    sprites.letterB = loadSprite('/Letters/letter_B.png');
    sprites.letterC = loadSprite('/Letters/letter_C.png');
    sprites.letterD = loadSprite('/Letters/letter_D.png');
    sprites.letterE = loadSprite('/Letters/letter_E.png');
    sprites.letterF = loadSprite('/Letters/letter_F.png');
}

Теперь я хочу иметь возможностьциклически перебирать опции этой буквы, чтобы выбрать правильную, например так:

letterNo = letterNo + 1;

var string = "sprites." + lts[letterNo];
console.log("sprite loading:" + string);
this.sprite = string;

Но когда я пытаюсь, я получаю:

sprites.letterB в отладчике, который является спрайтом, который я хочузагрузить, но это не нравится:

TypeError: Аргумент 1 из CanvasRenderingContext2D.drawImage не может быть преобразован ни в одно из: HTMLImageElement, SVGImageElement, HTMLCanvasElement, HTMLVideoElement, ImageBitmap.

Как мне заставить это работать, пожалуйста?

1 Ответ

0 голосов
/ 04 ноября 2019

"sprites.letterB" - это просто строка, которая не имеет отношения к объекту спрайтов. Если вы хотите получить доступ к ключу в объекте спрайтов, используйте скобку: sprites[lts[letterNo]].

...