AntKarlov / Anthill-Framework

Tiny framework for creating Flash games.
57 stars 16 forks source link

Загрузка embed графики #9

Closed Ogimle closed 10 years ago

Ogimle commented 11 years ago

я сейчас допилю, но думаю и в самом движке неплохо было бы предусмотреть, в конец списка аргументов добавлено еще два

    /**
     * Добавляет растровую картинку в очередь на кэширование.
     * 
     * <p>Если задана ширина или высота кадра, то изображение автоматически будет разрезано на кадры
     * равные заданным параметрам. Если значения высоты и ширины кадра не заданы, то будет создана 
     * однокадровая анимация содержащая в себе изображение целиком.</p>
     * 
     * @param   aGraphicClass    Класс растрового изображения.
     * @param   aKey     Имя анимации под которым будет доступна растровая копия изображения после обработки.
     * @param   aFrameWidth  Размер кадра анимации по ширине.
     * @param   aFrameHeight     Размер кадра анимации по высоте.
     * @param   aOriginX     Смещение кадров анимации по X относительно нулевой координаты.
     * @param   aOriginY     Смещение кадров анимации по Y относительно нулевой координаты.
     * @param   aBorder  Смещение списка кадров от края текстуры.
     * @param   aSpace   Расстояние между кадрами
     */
    public function addGraphic(aGraphicClass:Class, aKey:String = null, aFrameWidth:int = 0, 
        aFrameHeight:int = 0, aOriginX:int = 0, aOriginY:int = 0, aBorder:int=0, aSpace = 0):void

для чего?

в примере движка по тайловым картам, для классической тайловой карты используется тайлсет в виде анимации, где каждый кадр это тайл, к такому виду приводится практически любой тайлсет для редакторов типа tiled, что позволяет прикрутить их формат без конвертации, но зачастую в тайлсете используются эти самые отступы.

зачем приводить?

я пока не представляю как определять поверхность уровня целиком отрисованного в одном клипе без использования тайлов, он конечно затайлится с помощью AntTileMap но кромка поверхности будет во первых не во всех тайлах и во вторых внутри тайла не всегда на одном уровне. Как определять коллизии в таких раскладах...?

начал прокручивать вариант с примером карты из мушрумера, карту надо кодировать что очень трудоемко, а уж про модификацию ее вообще молчу, если делать клипом, а потом грузить как кешированную - затайливается все включая "воздух", второе чтобы отделить "воздух" от земли надо фильтровать тайлы по списку кадров с которыми может столкнуться мобильный объект и опять жесткая привязка номера кадра к коду.

Было решено использовать карты сделанные в Tiled (первый попался)

AntKarlov commented 11 years ago

Как определять коллизии в таких раскладах...?

Не хорошо проверять коллизии с целой картой сразу, так как в итоге это может негативно сказаться на производительности. Ну, и в будущем, по мере развития проекта, так же могут возникнуть другие проблемы. Лучшим решением будет создание отдельной карты для проверки столкновений.

В любом случае если нужен aBorder и aSpace — это можно реализовать. У вас есть успехи в продвижении этого вопроса? Буду рад посмотреть вашу версию метода с этими аргументами.

Ogimle commented 11 years ago

успехи есть, про коллизии с целой картой тоже не вижу смысла, у меня земля в отдельном слое, деревья в своем, трава, цветы и т.п., стресстестов я не устраивал шибких, тестируюсь на карте 100х15 тайлов размером 32х32, 5 слоев один из которых заполнил тайлами на 100%. фпс 30, в условиях игровой логики фпс 20. Меня устаивает, тем более что каждый слой вряд ли будет заполнен даже на 50% да и тайлы думаю будут 64х64

Ogimle commented 10 years ago

все ленился поднимать и настраивать гита, чтоб напрямую "предложить", но так лень и не переборол, а обновлятся с репозитария и каждый раз вручную синхронизироваться не радует, я в архив приложу файлы, а тут перечислю что поменял

AntAssetLoader::addGraphic добавлены аргументы функции


в функции AntAssetLoader::process в раздел switch::DATA_GRAPHIC дописана передача новых аргументов в функцию AntAnimation::makeFromGraphic


AntAnimation::makeFromGraphic добавлены аргументы функции

P.s. все новые аргументы добавлялись в конец со значениями по умолчанию, так что правки действующих проектов нововведения не потребуют

P.s.s. а зип-то и не приложить... в общем на почту высылаю тогда, только прокоментируйте плиз, чтобы было понятно выносить ли мне новое из движка в свой код, чтобы избежать проблем с обновлениями

AntKarlov commented 10 years ago

Я все получил и в ближайшие пару дней изучу ваши изменения и добавлю в Anthill. Спасибо за обновление по данной теме.