Лукавая ошибка JS говорит, что я не закрываю функцию

if (char == 'anime') {
        Crafty.sprite("sprites_hunt_w.png", {
                guy: [1, 2, 27, 31]
            })
            .reel('guy_right', 1000, [
                [1, 64],
                [34, 64],
                [65, 65]
            ])
            .reel('guy_left', 1000, [
                [1, 32],
                [34, 32],
                [65, 33]
            ])
    } else {
        Crafty.sprite("megamanx.gif", {
                guy: [0, 0, 28, 34]
            })
            .reel('guy_right', 1000, [
                [214, 19],
                [248, 19],
                [281, 19],
                [321, 19],
                [352, 19],
                [371, 19],
                [394, 19],
                [427, 19]
            ])
            // }else{
            //console.log("fail")
    }

Консоль для Firefox сообщает TypeError: Crafty.sprite(...). Reel не является функцией. Это относится к линии

Crafty.sprite("megamanx.gif", { 

То, что я не понимаю, это то, что для меня это выглядит точно так же (кроме источника изображения), как эта строка

Crafty.sprite("sprites_huntw.png", {

Из-за этого я не понимаю, почему я получаю ошибку. Заранее спасибо за вашу помощь

1 ответ

Вы пытаетесь позвонить .reel() в качестве метода на возвращаемое значение Crafty.sprite, Но Crafty.sprite не возвращает сущность спрайта - он создает компонент, а затем возвращает глобальный Crafty объект (так что вы можете связать вызовы методов на Crafty).

Поэтому вместо этого вам нужно добавить этот компонент к объекту, чтобы использовать его, а затем добавить компонент SpriteAnimation для определения барабанов. Вот пример из документации:

// Define a sprite-map component
Crafty.sprite(16, "images/sprite.png", {
    PlayerSprite: [0,0]
});

// Define an animation on the second row of the sprite map (fromY = 1)
// from the left most sprite (fromX = 0) to the fourth sprite
// on that row (frameCount = 4), with a duration of 1 second
Crafty.e("2D, DOM, SpriteAnimation, PlayerSprite").reel('PlayerRunning', 1000, 0, 1, 4);

// This is the same animation definition, but using the alternative method
Crafty.e("2D, DOM, SpriteAnimation, PlayerSprite").reel('PlayerRunning', 1000, [[0, 1], [1, 1], [2, 1], [3, 1]]);
Другие вопросы по тегам