Управление скоростью анимации спрайтов

Как я могу контролировать скорость анимации спрайта с помощью create JS?

Когда вы нажимаете вправо и влево, спрайт будет проходить через кадры ... Я бы хотел оставить частоту кадров на уровне 60, но изменить скорость зацикливания кадров без изменения основной скорости FPS в игре.

Посмотрите демонстрацию здесь. Нажмите стрелку вправо и влево, чтобы увидеть.

Я думал, что изменение свойства частоты анимации bmp поможет...

bmpAnimation.frequency = 2;

Но не получилось...

Или мне следует использовать анимацию jQuery?

Также я заметил, что каждый раз, когда я нажимаю случайную клавишу, анимация воспроизводится 1 кадр, а затем возвращается к первому кадру. Это почему?

Спасибо!


person Growler    schedule 11.08.2013    source источник


Ответы (1)


1) frequency является свойством анимации spriteSheet, а не самой растровой анимации.

Таким образом, вам нужно будет установить частоту в самом SpriteSheetData(http://www.createjs.com/Docs/EaselJS/classes/SpriteSheet.html) или, если вы хотите установить его во время выполнения, вы можете использовать:

bmpAnimation.spriteSheet.getAnimation("walk_right").frequency = 2;

Также обратите внимание, что frequency будет объявлено устаревшим в следующей версии EaselJS в пользу speed (немного это в СЛЕДУЮЩЕЙ версии, так что просто кое-что для вас, чтобы иметь в виду)

2) В настоящее время вы вызываете gotoAndPlay() каждый кадр (при ходьбе), это означает, что каждый кадр вашей анимации будет установлен на первый кадр этой анимации, вы можете легко избежать этого, используя что-то вроде:

if ( dir == "right" and bmpAnimation.currentAnimation != "walk_right" ) {
    bmpAnimation.gotoAndPlay("walk_right");
}

Но лучше вызывать этот метод только ОДИН РАЗ, когда вы начинаете ходить, а затем еще раз, когда останавливаетесь.

person olsn    schedule 12.08.2013