Дневник разработчика DK
Все остальные элементы будут выпускаться отдельными плагинами по мере готовности. То есть, например, для слайдера будет отдельный плагин, для прогресс бара и т. д.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Кто пользуется MV, заметил, что в img/system есть изображение ButtonSet.png, которое состоит из 4 кнопок в 2 ряда. Верхний ряд используется для отображения обычного состояния, нижний ряд используется при нажатии на кнопку.
А мне вот лень рисовать второй ряд для кнопок, поэтому придумал следующее:
Я использую вот это изображение для кнопки:
Ниже представленный код написан для пустой сцены
Итак, поехали!
1. Сначала создаем кнопку (спрайт)
2. Задаем название графики с помощью setup функции
Но эту папку можно поменять функцией setupGraphicFolder
3. Запускаем работу спрайта и добавляем нашу кнопку в сцену
Теперь перейдем к самому интересному! Нужно сделать анимацию нажатия на наш спрайт.
4. Изменяем точку привязки
5. Устанавливаем прозрачность спрайта для обычного и нажатого состояний
Hot - нажатое состояние
6. Устанавливаем масштабирование спрайта для обычного и нажатого состояний
Все. Наша кнопка готова. На нее можно нажимать и видеть анимацию нажатия.
Но кнопка ничего не делает и на ней нет никакого текста.
Добавим текст кнопке.
7. Создадим разовое событие для спрайта
Тип события - 'ready'. Это означает то, что, когда графика будет загружена, сработает это событие.
Для чего это нужно ? Чтобы мы могли узнать размер нашей кнопки (также размер можно узнать из файла графики, но я предполагаю, что у меня могут меняться файлы графики и точного размера я никогда не узнаю, поэтому лучше программно определять размер графики)
Теперь мы можем получить ширину и высоту нашей кнопки
Далее мы создаем новый спрайт
Устанавливаем ему размер нашей кнопки
Задаем текст
Запускаем работу спрайта текста
И добавляем его к нашей кнопке
Вот теперь на нашей кнопке есть текст
8. Добавим действие на нашу кнопку
Тип события - 'click'. События этого типа срабатывают, когда пользователь нажимает на спрайт
Также существует длительное нажатие на спрайт (событие типа 'longPress')
Функция addEventHandler создает бесконечное событие, которое не имеет длительности действия, то есть обрабатывается и хранится в объекте всегда
В данном случае нажатие на нашу кнопку будет просто закрывать сцену
Результат в виде скринов (обычное состояние и нажатое):
На этом мини-урок закончен
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Использована всего одна функция!!! Тестирую движок анимаций для спрайтов и окон. Может быть в следующей версии будет доступно, а пока видео: ссылка
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Неплохо, для отладки сойдет. Тем более, что библиотека действительно большая и стоит такой вот отдельной плашки.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пытаюсь реализовать класс Animation для простого создания анимаций для спрайтов и окон на основе событий (Event)
Для этого требуется модификация класса Event
Возможно будет реализован класс Color, который будет управлять цветом и являться параметром в спрайтах и окнах
Реализован класс Font, который является параметром в спрайтах и окнах
Реализован класс Audio, в котором хранятся следующие классы: Base, BGM, BGS, ME, SE
Base - абстрактный класс, который используется только для наследования BGM, BGS, ME, SE
BGM, BGS, ME, SE классы предназначены облегчить работу со звуками.
Во-первых, объекты этих классов будут являться параметрами в спрайтах и окнах.
Во-вторых, в классах реализованы функции, которые позволяют с легкостью включать звуки, такие как: play, stop, seek (для просмотра текущей позиции).
Пример использования:
var bgm = new DKTools.Audio.BGM(name);
bgm.play();
Вместо name указываем название файла
Все. Теперь у нас играет музыка. Вроде просто.
Также переделаю нажатия на спрайты. Добавлю несколько состояний, анимации, звуки и поддержку drag-and-drop (это скорее всего не в версии 0.96)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Я нашел плагин для анимации, поэтому пока не знаю, стоит ли мне разрабатывать свой класс, раз можно будет подключать уже готовый по желанию или же нагло стырить их реализацию, переделав на свой лад...
Также я нашел следующие плагины:
Система частиц - как совместить с DKTools пока не знаю, но, если кому нужен плагин, то дам ссылку
Таймер - у меня уже в принципе реализован похожий класс под названием Event, но я об этом тоже подумаю
Input - хорошая замена стандартному Input в мейкере. Поддерживает всю клавиатуру и запросто можно вешать горячие клавиши
Плагин UI - содержит всякие окна, checkbox, кнопки и прочее, что я собирался сделать. Скорее всего я сделаю свои элементы, но что-то могу спереть из их плагина.
Также я нашел плагин освещения. Демка выглядит потрясно, но не разобрался, как его применить
Вот, что еще было сделано:
Пришлось отказаться от класса Color
Возможно, придется отказаться от класса Font
Переделан класс Localization
Скорее всего будет переименован класс ContainerBase в Layout, потому что по смыслу больше подходит
Пока неизвестна судьба классов TextContainer и Container, потому что это частные случаи класса ContainerBase
Скорее всего будет переименован класс InputManager в Input (возможно, но скорее всего нет, встрою в него плагин DK_Full_Input)
Сейчас перелапачиваю документацию, чтобы она отображалась правильно в онлайн версии
P. S. До релиза плагина я волен менять названия классов
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Да, от класса Font отказался. Сделал по-другому, сохранив тот же функционал.
Добавил класс PluginManager, который управляет плагинами. Он добавляет возможность регистрировать зависимости между плагинами и их версиями.
Продолжаю работать над классом Localization, чтобы упростить пользователям работу с локализацией.
Да, класс ContainerBase переименован в Layout. Также будут внесены небольшие изменения.
Классы TextContainer и Container пока убрал.
InputManager пока не трогал не до него сейчас
Есть существенные подвижки в классе Animation. Вроде бы общую структуру уже сделал
Класс DKTools.Audio.Base мигрировал просто в DKTools.Audio. BGM, BGS, ME, SE наследуются от него теперь
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Сегодня выложил первую обнову на гитхабе
Изменений немного:
Улучшены load методы
Переименованы символы в опции, чтобы было более понятнее, зачем они нужны.
Опции (ранее символы) позволяют активировать у спрайта/окна некоторые функции. Например, прикосновения мышью по умолчанию отключены, чтобы меньше нагружать функцию update, но, активировав опцию прикосновений, вы сможете задать поведение спрайта при нажатии на него.
Также добавил ссылку на онлайн документацию в первый пост темы DKTools
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Были удалены классы bgm, bgs, me, se. Остался класс Audio, которому был добавлен параметр type, принимающий значение bgm, bgs, me или se, что и определяет тип аудиофайла.
Также была изменена работа этого класса, а именно аудиофайлы отвязаны от стандартного AudioManager, что позволяет воспроизводить несколько аудиофайлов параллельно, если это требуется. Также стали доступны функции паузы/продолжения для аудиофайлов, и они автоматически реагируют на изменение громкости в настройках игры
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Вынес перевод текста на разные языки в отдельный DKTools.json файл. Теперь в нем хранится локализация различных строк. Тоже самое будет с остальными плагинами.
Скорее всего, при регистрации вашего или любого другого плагина в менеджере плагинов (DKTools.PluginManager) будет осуществляться попытка загрузки локализации для него (json файл с именем плагина, который регистрируется). Файл обязателен только в тех плагинах, в которых я или любой другой автор предусмотрел локализацию.
Плюс такого подхода в том, что не придется перенастраивать локализацию при обновлении файла.
Также были убраны некоторые alpha и beta функции до лучших времен.
Надеюсь, что релиз версии 0.97 на этой неделе
P.S. Сейчас использовании локализации выглядит следующим образом:
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
-Рефакторинг событий (DKTools.Event)
-Улучшение клонирования и определения фиксированной битмапы
-Немного изменен принцип обработки наведения мыши на спрайт
-Наведение мыши на спрайт по умолчанию отключено, так как редко используемая функция. Включается как опция функцией enableOption
-Функции нажатия на спрайт (кнопки) пока вырезаны. Скорее всего кнопка будет отдельным элементом (Button), потому что тоже редко используемая функция
-Может еще что-то
Чего ожидать в версии 0.97:
-Вышеупомянутый элемент Button
-Возможно элемент Selectable, который представляет собой реализацию Window_Selectable, но только в виде спрайта.
-Улучшения в классах PluginManager, FileManager, Localization
-Всякие другие улучшения
Элементы Layout и Viewport будут улучшены после полностью готовых и проверенных Base и Sprite
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Что будет нового:
Поддержка нововведений мейкера 1.5.
Больше не придется лезть внутрь плагина для настройки отдельных параметров. Все будет настраиваться через менеджер плагинов, в том числе и локализация текста.
Раньше было ограничение на 3 окна (игра, меню, битва). Будет добавлена возможность создавать неограниченное количество окон со своим стилем. Одно окно на одной сцене.
Возможно что-то еще...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Локализация
Новый менеджер плагинов позволяет реализовать локализацию внутри мейкера. Больше не придется лезть внутрь плагина, читать сложные инструкции и редактировать файлы. Отныне все будет происходить в программе.
Пример реализации локализации для Game Time:
Такой подход позволит добавить неограниченное количество языков.
В связи с этим разрабатывается новый класс для DKTools, который называется ParameterManager. Этот менеджер будет отвечать за работу с параметрами плагинами.
Пример использования для Game Time:
Также реализован специальный алгоритм конвертации локализации текста.
Как выглядит объект до конвертации:
Данный алгоритм работает по ключам Locale и Data.
Пока эта функция находится в бета тестировании и наверняка будет дорабатываться.
Это повышает удобство использования данных в коде, ведь теперь можно обратиться к нужным данным, указав в виде ключа локаль игры.
Также менеджер плагинов имеет одну функцию, называемую get, которая принимает 2 параметра: parameterName, item (опциональный)
Функция возвращает параметр по его имени. Item используется для объектов или массивов. Вы можете указать ключ или индекс, и функция вернет конкретный элемент параметра. Также функция автоматически распознает какой тип параметра нужно вернуть: либо просто параметр, либо локализованный. Таким образом, разработчику не нужно задумываться о локализации.
Пример использования:
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
