У меня есть 2 метода экспортера (планируя иметь больше), которые по сути берут мое определение спрайта от моего создателя спрайтов и экспортируют его в файл PNG и файл XML, который описывает PNG. Прямо сейчас я добавил эти два метода в свой класс Sprite для тестирования, но они на самом деле не принадлежат ему. Поэтому я подумал, что было бы хорошо, если бы я создал интерфейс для экспортеров и импортеров, а затем имел один класс для каждого типа импортеров / экспортеров, верно?
Теперь проблема в том, что два моих метода не имеют одинаковых параметров, поэтому я не могу использовать интерфейс очень легко.
Первый экспортер - это «организованный» экспортер, который экспортирует кадры таким образом, что люди могут легко следовать, без ограничений. Было бы просто взять определение спрайта и имя файла (без расширения), чтобы получить пару файлов.
Второй экспортер - это оптимально упакованный экспортер, который принимает те же параметры плюс максимальную ширину и высоту. Сейчас он не оптимален, он не меняет размеры кадров и просто выбирает следующий подходящий слот. Возможно, есть дополнительные параметры (параметры), о которых я еще не думал для этого метода.
XML идентичен для существующих экспортеров, но PNG отличается. Некоторое время спустя я мог бы захотеть иметь других экспортеров метаданных, таких как JSON.
Для существующих экспортеров они оба следуют этой схеме:
- Определить размер выходного PNG ( Разное для каждого метода)
- Создание растрового объекта с таким размером
- Настройте и начните запись в мой XML-файл
- Запишите кучу метаданных, которые пока не относятся к фреймам
- Итерация по каждой последовательности (немного сложнее, чем кажется)
- Для каждого кадра:
- Выясните, куда пойдет кадр ( Различный для каждого метода)
- Введите информацию об этом кадре, включая расположение и размер спрайт-листа сверху
- Нарисуйте рамку для выходного растрового изображения в месте и размере, рассчитанном выше
- Сохранить и закрыть файлы
Я могу предоставить ссылку на код по запросу.
(я добавил вопрос "Импортер", потому что я хочу добавить импортеров к этим экспортерам однажды)
Есть какие-нибудь предложения о том, как я могу вывести этих экспортеров из моего класса Sprite и как их связать?