анимация спрайтов - PullRequest
       31

анимация спрайтов

1 голос
/ 05 октября 2011

Я пытаюсь запустить скрипт, но у меня небольшие проблемы. Я использовал Javascript только один раз, но теперь мне нужно заставить анимацию персонажа бегать взад-вперед по веб-странице и продолжать до тех пор, пока страница не закроется. Мой отладчик говорит, что в строке 57 есть ошибка ссылки, но я уверен, что это не единственная проблема. Если бы кто-нибудь мог взглянуть на код и посмотреть, появляется ли на них что-нибудь, я был бы благодарен.

goog.provide('mysprites');


goog.require('lime');
goog.require('lime.Director');
goog.require('lime.Layer');
goog.require('lime.Sprite');
goog.require('lime.fill.Frame');
goog.require('lime.animation.KeyframeAnimation');
goog.require('lime.animation.MoveBy');
goog.require('lime.SpriteSheet');
goog.require('lime.animation.MoveTo');
goog.require('lime.animation.Sequence');
goog.require('lime.animation.Loop');
goog.require('lime.animation.Delay');
goog.require('lime.parser.JSON');
goog.require('lime.ASSETS.spaceman.json');


mysprites.WIDTH = 600;
mysprites.HEIGHT = 400;


mysprites.start = function() {

//director
mysprites.director = new lime.Director(document.body, mysprites.WIDTH, mysprites.HEIGHT);
mysprites.director.makeMobileWebAppCapable();

var gamescene = new lime.Scene;

layer = new lime.Layer();
gamescene.appendChild(layer);

// load the spritesheet
mysprites.ss = new lime.SpriteSheet('assets/spaceman.png',lime.ASSETS.spaceman.json,lime.parser.JSON);

var sprite = mysprites.makeMonster().setPosition(100,100);
layer.appendChild(sprite);

//move
var moveRight = new lime.animation.MoveTo(874, 100)
    .setSpeed(1)
    .setEasing(lime.animation.Easing.LINEAR);

var moveLeft = new lime.animation.MoveTo(100, 100)
    .setSpeed(1)
    .setEasing(lime.animation.Easing.LINEAR);


// show animation
var anim = new lime.animation.KeyframeAnimation();
anim.delay= 1/10;
for(var i=0;i<=9;i++){
    anim.addFrame(mysprites.ss.getFrame('spaceman-'+'w'+'0'+i+'.png'));
}
monster.runAction(anim);

    var anim2 = new lime.animation.KeyframeAnimation();
anim.delay= 1/10;
for(var i=0;i<=9;i++){
    anim.addFrame(mysprites.ss.getFrame('spaceman-'+'e'+'0'+i+'.png'));
}
monster.runAction(anim2);

goog.events.listen(moveRight,lime.animation.Event.STOP, function () {
    setTimeout(function () {
        monster.runAction(moveLeft);
    }, 500);
});

goog.events.listen(moveLeft,lime.animation.Event.STOP, function () {
    setTimeout(function () {
        monster.runAction(moveRight);
    }, 500);
});   
};

mysprites.makeMonster = function(){
var sprite = new lime.Sprite().setPosition(200,200)
    .setFill(mysprites.ss.getFrame('spaceman-s00.png'));
//layer.appendChild(sprite);

return sprite;
};

goog.exportSymbol('mysprites.start', mysprites.start);

1 Ответ

1 голос
/ 12 декабря 2011

Я думаю, вам лучше задать свой вопрос здесь https://groups.google.com/forum/#!forum/limejs Пожалуйста, проверьте следующее:

  • Если все элементы spritesheet, на которые есть ссылки в KeyframeAnimation, присутствуют в вашей spritesheet
  • Попробуйте использовать методы setDelay, setLooping API вместо прямого назначения
  • Я не вижу определения переменной монстра ...
...