Таблица стилей не работает как положено
Я новичок в Flixel, поэтому, пожалуйста, прости меня, если мой вопрос слишком прост.
Мой вопрос: я сделал четыре очень простых изображения (стоять, двигать, стоять сбоку, перемещать в сторону), используя Photoshop, а затем передал его в Texture Packer (производитель таблиц стилей), он создал мне изображение (это очень просто) плюс JSON файл, вот он:
Поэтому я хотел использовать их с Flixel в качестве персонажа, который стоит (первый), и когда я вызываю анимацию, он будет использовать последнее изображение, но оно не сработало, как ожидалось. в основном он показывает все четыре изображения одновременно.
вот код:
Character.as:
package
{
import org.flixel.FlxSprite;
public class Character extends FlxSprite
{
[Embed (source="character.png")]
private var CharacterGraphic:Class;
public function Character(X:Number=0, Y:Number=0)
{
super(X, Y);
loadGraphic(CharacterGraphic, true, false, 53, 54);
velocity.y = 100;
addAnimation('move_forward', [0, 3], 30, false);
}
}
}
Класс PlayState (где я создаю экземпляр этого класса)
override public function create():void{
character = new Character(100, 200);
add(character);
}
override public function update():void{
//for debugging
if(character.y == 600){
character.play('move_forward');
}
super.update();
}
Итак, я ожидал:
первое изображение, которое нужно вытолкнуть (и продолжать движение вниз), когда speed.y равно 600(только для тестирования), начинается анимация move_forward (циклически проходя по первому и последнему изображению)
И вывод:
Все четыре изображения выскочили, и при speed.y == 60 ничего не происходит.
Я действительно думаю, что что-то упустил, так как я очень новичок в ActionScript 3 и Flixel(также разработка игр!).
Практически те же шаги сработали для онлайн-учебника. Разница лишь в том, что он создал пару анимаций (врагов) вместо одной, посмотрите здесь http://gotoandlearn.com/play.php?id=139
Что касается файла JSON, я никогда не нашел его (я пытался спрашивать в каналах IRC, но никто не упоминал об этом), а также в форумах / руководствах.
1 ответ
Первая проблема, которую я вижу, состоит в том, что у вас есть изображения в несколько рядов. Flixel любит свои рамки в квадратах все в одном горизонтальном ряду. Даже если вы укажете прямоугольный размер для каждого кадра, они все равно должны быть одинакового размера и в одном горизонтальном ряду. Если вы все делаете правильно, у вас должны быть кадры от 0 до 3.
Причина, по которой ничего не происходит, когда ваше изображение / фрейм должен измениться, заключается в том, что в индексе нет фрейма, на который вы хотите его изменить. Это должно быть исправлено тем же изменением.
По этой причине я не доверяю большинству упаковщиков спрайтов с проектами flixel. Упаковщики спрайтов пытаются минимизировать размер файла, поэтому они втиснут как можно больше спрайтов в как можно меньше места, поэтому каждый спрайт отличается от остальных. Flixel, как я уже сказал, любит свои спрайты в одинаковых размерах и все в одном ряду.
Я нашел тот, который делает то, что я хочу... Мне нужно будет посмотреть, как только я вернусь домой, чтобы посмотреть, что это за программа (или, если у меня ее больше нет). В то же время, просто используйте Photoshop, чтобы сделать документ высоту вашего самого высокого спрайта и ширину ширину вашего самого широкого спрайта х число спрайтов на листе. Затем поместите каждый спрайт / фрейм в соответствующее пространство.
Изменить: я не думаю, что вам нужен файл JSON вообще. Просто используйте прозрачный PNG.