2015-04-06 2 views
0
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 (...) барабан не является функцией. Это относится к линииCrafty JS error говорит, что я не закрываю функцию

Crafty.sprite("megamanx.gif", { 

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

Crafty.sprite("sprites_huntw.png", { 

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

+0

'console.log (Crafty.sprite)' – zerkms

ответ

0

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

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

// 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]]);