Лукавая ошибка 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]]);