Войти на сайт

Авторизация, ждите ...
×
  • Страница:
  • 1
  • 2
  • 3
  • 4
  • 5

ТЕМА: Дневник разработчика DK

Дневник разработчика DK 7 года 3 мес. назад #95531

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Плагин разрабатывается уже почти год (будет через 3 недели). Мне это немного надоело (хочется уже выпустить первую версию). Я обдумываю вариант выпуска базовой части плагина. Базовая часть будет включать в себя все основные функции, необходимые для работы плагина и всех элементов, такие как: расширения стандартных классов, утилиты, базовый каркас, спрайт, окно, контейнер, сцена и события.

Все остальные элементы будут выпускаться отдельными плагинами по мере готовности. То есть, например, для слайдера будет отдельный плагин, для прогресс бара и т. д.
Администратор запретил публиковать записи гостям.

Дневник разработчика DK 7 года 3 мес. назад #95542

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Вот как это будет выглядеть:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Администратор запретил публиковать записи гостям.

Дневник разработчика DK 7 года 3 мес. назад #95802

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Эх, когда-то я здесь работал:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Последнее редактирование: 7 года 3 мес. назад от DK.
Администратор запретил публиковать записи гостям.

Дневник разработчика DK 7 года 3 мес. назад #96184

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Небольшой урок по созданию кнопки с помощью DKTools 0.95

Кто пользуется MV, заметил, что в img/system есть изображение ButtonSet.png, которое состоит из 4 кнопок в 2 ряда. Верхний ряд используется для отображения обычного состояния, нижний ряд используется при нажатии на кнопку.

А мне вот лень рисовать второй ряд для кнопок, поэтому придумал следующее:

Я использую вот это изображение для кнопки:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Ниже представленный код написан для пустой сцены

Итак, поехали!

1. Сначала создаем кнопку (спрайт)
this.sprite = new DKTools.Sprite(100, 100);
100, 100 - координаты нашего спрайта

2. Задаем название графики с помощью setup функции
this.sprite.setupGraphicName('button');
По умолчанию графика загружается из папки img/system
Но эту папку можно поменять функцией setupGraphicFolder

3. Запускаем работу спрайта и добавляем нашу кнопку в сцену
this.sprite.start();
this.addChild(this.sprite);
После запуска работы спрайт загружает изображение

Теперь перейдем к самому интересному! Нужно сделать анимацию нажатия на наш спрайт.

4. Изменяем точку привязки
this.sprite.movePivot('center');
Теперь наши координаты находятся в центре спрайта, а не в левом верхнем углу

5. Устанавливаем прозрачность спрайта для обычного и нажатого состояний
this.sprite.setupColdOpacity(255);
this.sprite.setupHotOpacity(125);
Cold - отвечает за обычное состояние
Hot - нажатое состояние

6. Устанавливаем масштабирование спрайта для обычного и нажатого состояний
this.sprite.setupColdScale(1, 1);
this.sprite.setupHotScale(0.95, 0.95);

Все. Наша кнопка готова. На нее можно нажимать и видеть анимацию нажатия.

Но кнопка ничего не делает и на ней нет никакого текста.

Добавим текст кнопке.

7. Создадим разовое событие для спрайта
this.sprite.addEventListener('ready', function() {
	var width = this.sprite.width;
	var height = this.sprite.height;
	this.text = new DKTools.Sprite();
	this.text.setupSize(width, height);
	this.text.setupText('Кнопка');
	this.text.start();
	this.sprite.addChild(this.text);
}.bind(this));
Функция addEventListener создает разовое событие для элемента DKTools.
Тип события - 'ready'. Это означает то, что, когда графика будет загружена, сработает это событие.
Для чего это нужно ? Чтобы мы могли узнать размер нашей кнопки (также размер можно узнать из файла графики, но я предполагаю, что у меня могут меняться файлы графики и точного размера я никогда не узнаю, поэтому лучше программно определять размер графики)
Теперь мы можем получить ширину и высоту нашей кнопки
Далее мы создаем новый спрайт
Устанавливаем ему размер нашей кнопки
Задаем текст
Запускаем работу спрайта текста
И добавляем его к нашей кнопке

Вот теперь на нашей кнопке есть текст

8. Добавим действие на нашу кнопку
this.sprite.addEventHandler('click', function() {
	this.popScene();
}.bind(this));
Добавим еще одно событие нашему спрайту
Тип события - 'click'. События этого типа срабатывают, когда пользователь нажимает на спрайт
Также существует длительное нажатие на спрайт (событие типа 'longPress')
Функция addEventHandler создает бесконечное событие, которое не имеет длительности действия, то есть обрабатывается и хранится в объекте всегда
В данном случае нажатие на нашу кнопку будет просто закрывать сцену

Результат в виде скринов (обычное состояние и нажатое):
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


На этом мини-урок закончен :)
Последнее редактирование: 7 года 3 мес. назад от DK.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: yuryol

Дневник разработчика DK 7 года 2 мес. назад #96718

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Сложная анимация спрайта (изменение нескольких параметров одновременно)

Использована всего одна функция!!! Тестирую движок анимаций для спрайтов и окон. Может быть в следующей версии будет доступно, а пока видео: ссылка
Последнее редактирование: 7 года 2 мес. назад от DK.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: yuryol

Дневник разработчика DK 7 года 2 мес. назад #96728

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Проект месяца 2 местоВетеран1 место в Готв3 местоОрганизатор конкурсовУчительПроект месяца 1 местоПисатель 3 местоПрограммист Ruby
Дк, пост с уроком хорош. А можешь ли ты его (и вообще всякие уроки по ДК Тулзам) писать в академии, чтобы они не потерялись? Было бы неплохо, я думаю.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DK, yuryol, Haspid

Дневник разработчика DK 7 года 2 мес. назад #96738

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Эльф, постараюсь уроки писать в академии

А пока вот скриншотик вам:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DeadElf79, yuryol

Дневник разработчика DK 7 года 1 мес. назад #96784

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Нагло стырил
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Последнее редактирование: 7 года 1 мес. назад от DK.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: AnnTenna, yuryol

Дневник разработчика DK 7 года 1 мес. назад #96790

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Проект месяца 2 местоВетеран1 место в Готв3 местоОрганизатор конкурсовУчительПроект месяца 1 местоПисатель 3 местоПрограммист Ruby
оффтоп [ Нажмите, чтобы развернуть ]


Неплохо, для отладки сойдет. Тем более, что библиотека действительно большая и стоит такой вот отдельной плашки.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DK

Дневник разработчика DK 7 года 1 мес. назад #96791

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Со всей ненавистью делаю, потому что уже больше года делаю :mad:
Последнее редактирование: 7 года 1 мес. назад от DK.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: strelokhalfer, yuryol

Дневник разработчика DK 7 года 1 мес. назад #96794

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Последние изменения и новости о версии 0.96

Пытаюсь реализовать класс 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)
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: yuryol

Дневник разработчика DK 7 года 1 мес. назад #96833

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Все-таки реализовал класс Color

Скрины реализованных классов
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: yuryol

Дневник разработчика DK 7 года 1 мес. назад #97032

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Последние несколько дней я активно искал различную информацию по pixi, которая была бы полезна для DKTools.

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

Также я нашел следующие плагины:
Система частиц - как совместить с DKTools пока не знаю, но, если кому нужен плагин, то дам ссылку
Таймер - у меня уже в принципе реализован похожий класс под названием Event, но я об этом тоже подумаю
Input - хорошая замена стандартному Input в мейкере. Поддерживает всю клавиатуру и запросто можно вешать горячие клавиши
Плагин UI - содержит всякие окна, checkbox, кнопки и прочее, что я собирался сделать. Скорее всего я сделаю свои элементы, но что-то могу спереть из их плагина.
Также я нашел плагин освещения. Демка выглядит потрясно, но не разобрался, как его применить :unsure:

Вот, что еще было сделано:
Пришлось отказаться от класса Color
Возможно, придется отказаться от класса Font
Переделан класс Localization
Скорее всего будет переименован класс ContainerBase в Layout, потому что по смыслу больше подходит
Пока неизвестна судьба классов TextContainer и Container, потому что это частные случаи класса ContainerBase
Скорее всего будет переименован класс InputManager в Input (возможно, но скорее всего нет, встрою в него плагин DK_Full_Input)
Сейчас перелапачиваю документацию, чтобы она отображалась правильно в онлайн версии

P. S. До релиза плагина я волен менять названия классов ^_^
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: strelokhalfer, yuryol

Дневник разработчика DK 7 года 1 мес. назад #97049

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Последние изменения. Уже на финальной прямой перед релизом версии 0.96

Да, от класса Font отказался. Сделал по-другому, сохранив тот же функционал.
Добавил класс PluginManager, который управляет плагинами. Он добавляет возможность регистрировать зависимости между плагинами и их версиями.
Продолжаю работать над классом Localization, чтобы упростить пользователям работу с локализацией.
Да, класс ContainerBase переименован в Layout. Также будут внесены небольшие изменения.
Классы TextContainer и Container пока убрал.
InputManager пока не трогал не до него сейчас
Есть существенные подвижки в классе Animation. Вроде бы общую структуру уже сделал
Класс DKTools.Audio.Base мигрировал просто в DKTools.Audio. BGM, BGS, ME, SE наследуются от него теперь
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: AnnTenna, yuryol

Дневник разработчика DK 7 года 1 мес. назад #97155

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Началась разработка версии 0.97
Сегодня выложил первую обнову на гитхабе
Изменений немного:
Улучшены load методы
Переименованы символы в опции, чтобы было более понятнее, зачем они нужны.
Опции (ранее символы) позволяют активировать у спрайта/окна некоторые функции. Например, прикосновения мышью по умолчанию отключены, чтобы меньше нагружать функцию update, но, активировав опцию прикосновений, вы сможете задать поведение спрайта при нажатии на него.

Также добавил ссылку на онлайн документацию в первый пост темы DKTools
Последнее редактирование: 7 года 1 мес. назад от DK.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: yuryol

Дневник разработчика DK 7 года 3 нед. назад #97323

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Немного о последних изменениях

Были удалены классы bgm, bgs, me, se. Остался класс Audio, которому был добавлен параметр type, принимающий значение bgm, bgs, me или se, что и определяет тип аудиофайла.

Также была изменена работа этого класса, а именно аудиофайлы отвязаны от стандартного AudioManager, что позволяет воспроизводить несколько аудиофайлов параллельно, если это требуется. Также стали доступны функции паузы/продолжения для аудиофайлов, и они автоматически реагируют на изменение громкости в настройках игры
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: yuryol, Lepsion

Дневник разработчика DK 7 года 2 нед. назад #97390

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Последние изменения, которые я внес:

Вынес перевод текста на разные языки в отдельный DKTools.json файл. Теперь в нем хранится локализация различных строк. Тоже самое будет с остальными плагинами.
Скорее всего, при регистрации вашего или любого другого плагина в менеджере плагинов (DKTools.PluginManager) будет осуществляться попытка загрузки локализации для него (json файл с именем плагина, который регистрируется). Файл обязателен только в тех плагинах, в которых я или любой другой автор предусмотрел локализацию.
Плюс такого подхода в том, что не придется перенастраивать локализацию при обновлении файла.

Также были убраны некоторые alpha и beta функции до лучших времен.
Надеюсь, что релиз версии 0.97 на этой неделе

P.S. Сейчас использовании локализации выглядит следующим образом:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Последнее редактирование: 7 года 2 нед. назад от DK.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: AnnTenna, yuryol, Astraslav

Дневник разработчика DK 7 года 3 дн. назад #97505

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Немного о изменениях перед версией 0.97:

-Рефакторинг событий (DKTools.Event)
-Улучшение клонирования и определения фиксированной битмапы
-Немного изменен принцип обработки наведения мыши на спрайт
-Наведение мыши на спрайт по умолчанию отключено, так как редко используемая функция. Включается как опция функцией enableOption
-Функции нажатия на спрайт (кнопки) пока вырезаны. Скорее всего кнопка будет отдельным элементом (Button), потому что тоже редко используемая функция
-Может еще что-то

Чего ожидать в версии 0.97:
-Вышеупомянутый элемент Button
-Возможно элемент Selectable, который представляет собой реализацию Window_Selectable, но только в виде спрайта.
-Улучшения в классах PluginManager, FileManager, Localization
-Всякие другие улучшения

Элементы Layout и Viewport будут улучшены после полностью готовых и проверенных Base и Sprite
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: yuryol

Дневник разработчика DK 6 года 10 мес. назад #98318

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Летом плагин времени (Game Time) получит крупное обновление.

Что будет нового:
Поддержка нововведений мейкера 1.5.

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

Раньше было ограничение на 3 окна (игра, меню, битва). Будет добавлена возможность создавать неограниченное количество окон со своим стилем. Одно окно на одной сцене.

Возможно что-то еще...
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: yuryol, VarVarKa, TaiberDUB

Дневник разработчика DK 6 года 10 мес. назад #98412

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Программист JavaScript Проект месяца 1 местоВетеранРазработчик2 место ОраторУчительПрограммист RubyДаритель СтимкеяПаладин
Еще немного о последних изменениях, связанных с версией мейкера 1.5

Локализация
Новый менеджер плагинов позволяет реализовать локализацию внутри мейкера. Больше не придется лезть внутрь плагина, читать сложные инструкции и редактировать файлы. Отныне все будет происходить в программе.
Пример реализации локализации для Game Time:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Такой подход позволит добавить неограниченное количество языков.

В связи с этим разрабатывается новый класс для DKTools, который называется ParameterManager. Этот менеджер будет отвечать за работу с параметрами плагинами.
Пример использования для Game Time:
var GameTimeParam = new DKTools.ParameterManager('DKTools_Game_Time');
При инициализации объекта происходит получение всех параметров плагина и их парсинг. Все объекты, числа, булевые переменные автоматически парсятся.
Также реализован специальный алгоритм конвертации локализации текста.
Как выглядит объект до конвертации:
[
 {
   Locale: 'ru',
   Data: данные
 },
 {
   Locale: 'en',
   Data: данные
 }
]
Как выглядит после конвертации:
{
 ru: данные,
 en: данные
}

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

Также менеджер плагинов имеет одну функцию, называемую get, которая принимает 2 параметра: parameterName, item (опциональный)
Функция возвращает параметр по его имени. Item используется для объектов или массивов. Вы можете указать ключ или индекс, и функция вернет конкретный элемент параметра. Также функция автоматически распознает какой тип параметра нужно вернуть: либо просто параметр, либо локализованный. Таким образом, разработчику не нужно задумываться о локализации.
Пример использования:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Последнее редактирование: 6 года 10 мес. назад от DK.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: yuryol, Rude
  • Страница:
  • 1
  • 2
  • 3
  • 4
  • 5
Время создания страницы: 0.265 секунд