Создание выключателя через Объект.свойство
Собственно инструкция в картинках, по скольку всем лень читать))
Для примера возьмем радиоуправляемый выключатель с командами вкл выкл...
Кнопки
Подготовка объекта
Перво-наперво подготовим объект для наших манипуляций....
Идем в панель управлиния -> объекты, в любом из классов (можно создать новый) создаём пустой объект (назвал его switch1), идём в его свойства, создаём 2 пустых свойства command_off и command_on. Вот как это должно выглядеть
- Настройка модуля
Далее идем в модуль бродлинк, записываем команды на включение и выключение, и привязываем к созданным нами свойствам....как то так
Вернемся (на всякий случай), убедимся, что свойства связались с модулем
В любом месте (реально в любом месте - методы, голосовые шаблоны, скрипты, элементы меню, элементы сцен, и т.д.) создаём код
1 |
sg('switch1.command_on', 1); //на включение |
и
1 |
sg('switch1.command_off', 1); //на выключение |
- Пример использования в меню
Я для примера создал 2 кнопки в меню - Вкл и Выкл
Соответственно при нажатии кнопки вкл или выкл - лампа должна включиться или выключиться....
Всё...для новичков на этом всё!! Никаких методов никуда писать не надо...1 команда - 1 свойство - 1 строчка кода - 1 кнопка - 1 действие.
Выключатель
Вы почуствовали себя preintermediate - пользователем?))) Ок, читаем дальше.
Делаем эмуляцию обратной связи, т.е. чтобы система хранила статус лампы, либо включалась/выключалась в зависимости от предыдущего сохраненного статуса....
Нет, это ни в коем случае не обратная связь...если кто-то руками/с пульта включит лампу - состояние уже не будет соответствовать сохраненному.
Итак...для этого нам нужно немного подготовить наш класс...
Подготовка класса
Возвращаемся в класс, идем в методы, и создаём метод (к примеру statusChanged)
1 2 3 4 5 |
if ($this->getProperty('status')) { $this->setProperty('command_on', 1); } else { $this->setProperty('command_off', 1); } |
Далее идём в свойства класса(!) и создаём классовое свойство status. К свойству привязываем созданный нами метод - statusChanged.
- Использование и пример выключателя в меню
Теперь если вы выставите свойство status у объекта switch1 в 1, выполнится команда на включение, если на 0 - на выключение...таким образом к данному свойству можно привязать к примеру элемент меню "выключатель", и никакого дополнительного кода писать не надо.
Теперь при щелчке этим выключателем меню - лампа должна включаться/выключаться...
Если же вы думаете что "правильнее же выполнять метод, а не менять свойство для какого либо действия" или "а можно же в методе прямо присваивать статус и вызывать сразу этот метод с параметрами" и т.д. и т.п. - поздравляю - вы опытный пользователь - и я не знаю зачем вам это было читать))) Да, одну задачу можно выполнить множеством способов...можно прямо в методе менять статус, не связывать статус со свойством, активировать команды вызывая метод с аргументом, создать отдельные методы на вкл и выкл, потом в зависимости от статуса вызывать один или другой - третьим методом....я могу долго продолжать)) Я, по возможности, привожу способы с наименьшим количеством кода, и более-менее понятные и логичные (по моему мнению)...я не говорю что моё мнение единственное правильное...все могут делать - как будет понятнее для них...благо, что модуль, и логика ООП это позволяют....
На этом думаю всё...пользуйтесь на здоровье)).