Небольшой урок по созданию кнопки с помощью 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 создает бесконечное событие, которое не имеет длительности действия, то есть обрабатывается и хранится в объекте всегда
В данном случае нажатие на нашу кнопку будет просто закрывать сцену
Результат в виде скринов (обычное состояние и нажатое):
На этом мини-урок закончен