Итак...по ходу меня разбанили с картинками))) Точнее сказать - лимит увеличили видимо. Теперь снова могу вложения прикреплять.
Собственно инструкция в картинках, раз всем лень читать))
Для примера возьмем радиоуправляемый выключатель с командами вкл выкл...
Перво-наперво подготовим объект для наших манипуляций....
Идем в панель управлиния -> объекты, в любом из классов (можно создать новый) создаём пустой объект (назвал его switch1), идём в его свойства, создаём 2 пустых свойства command_off и command_on. Вот как это должно выглядеть
![1.jpg](./download/file.php?id=4933&sid=0395e4ee42a6ac3bda642a85ea351eca)
- 1.jpg (47.79 КБ) 10325 просмотров
Далее идем в модуль бродлинк, записываем команды на включение и выключение, и привязываем к созданным нами свойствам....как то так
![2.jpg](./download/file.php?id=4934&sid=0395e4ee42a6ac3bda642a85ea351eca)
- 2.jpg (60.44 КБ) 10325 просмотров
Вернемся (на всякий случай), убедимся, что свойства связались с модулем
![3.jpg](./download/file.php?id=4935&sid=0395e4ee42a6ac3bda642a85ea351eca)
- 3.jpg (46.8 КБ) 10325 просмотров
В любом месте (реально в любом месте - методы, голосовые шаблоны, скрипты, элементы меню, элементы сцен, и т.д.) создаём код
Код: Выделить всё
sg('switch1.command_on', 1); //на включение
и
Код: Выделить всё
sg('switch1.command_off', 1); //на выключение
![4.jpg](./download/file.php?id=4936&sid=0395e4ee42a6ac3bda642a85ea351eca)
- 4.jpg (77.13 КБ) 10325 просмотров
![5.jpg](./download/file.php?id=4938&sid=0395e4ee42a6ac3bda642a85ea351eca)
- 5.jpg (79.53 КБ) 10325 просмотров
Я для примера создал 2 кнопки в меню - Вкл и Выкл
![m1.jpg](./download/file.php?id=4937&sid=0395e4ee42a6ac3bda642a85ea351eca)
- m1.jpg (9.59 КБ) 10325 просмотров
Соответственно при нажатии кнопки вкл или выкл - лампа должна включиться или выключиться....
Всё...для новичков на этом всё!! Никаких методов никуда писать не надо...1 команда - 1 свойство - 1 строчка кода - 1 кнопка - 1 действие.
Вы почуствовали себя preintermediate - пользователем?))) Ок, читаем дальше.
Делаем эмуляцию обратной связи, т.е. чтобы система хранила статус лампы, либо включалась/выключалась в зависимости от предыдущего сохраненного статуса....
Нет, это ни в коем случае не обратная связь...если кто-то руками/с пульта включит лампу - состояние уже не будет соответствовать сохраненному.
Итак...для этого нам нужно немного подготовить наш класс...
Возвращаемся в класс, идем в методы, и создаём метод (к примеру statusChanged)
Код: Выделить всё
if ($this->getProperty('status')) {
$this->setProperty('command_on', 1);
} else {
$this->setProperty('command_off', 1);
}
![6.jpg](./download/file.php?id=4939&sid=0395e4ee42a6ac3bda642a85ea351eca)
- 6.jpg (58.59 КБ) 10325 просмотров
Далее идём в свойства класса(!) и создаём классовое свойство status. К свойству привязываем созданный нами метод - statusChanged.
![7.jpg](./download/file.php?id=4940&sid=0395e4ee42a6ac3bda642a85ea351eca)
- 7.jpg (64.06 КБ) 10325 просмотров
Теперь если вы выставите свойство status у объекта switch1 в 1, выполнится команда на включение, если на 0 - на выключение...таким образом к данному свойству можно привязать к примеру элемент меню "выключатель", и никакого дополнительного кода писать не надо.
![8.jpg](./download/file.php?id=4941&sid=0395e4ee42a6ac3bda642a85ea351eca)
- 8.jpg (67.23 КБ) 10325 просмотров
![9.jpg](./download/file.php?id=4942&sid=0395e4ee42a6ac3bda642a85ea351eca)
- 9.jpg (36.95 КБ) 10325 просмотров
Теперь при щелчке этим выключателем меню - лампа должна включаться/выключаться...
Если же вы думаете что "правильнее же выполнять метод, а не менять свойство для какого либо действия" или "а можно же в методе прямо присваивать статус и вызывать сразу этот метод с параметрами" и т.д. и т.п. - поздравляю - вы опытный пользователь - и я не знаю зачем вам это было читать))) Да, одну задачу можно выполнить множеством способов...можно прямо в методе менять статус, не связывать статус со свойством, активировать команды вызывая метод с аргументом, создать отдельные методы на вкл и выкл, потом в зависимости от статуса вызывать один или другой - третьим методом....я могу долго продолжать)) Я, по возможности, привожу способы с наименьшим количеством кода, и более-менее понятные и логичные (по моему мнению)...я не говорю что моё мнение единственное правильное...все могут делать - как будет понятнее для них...благо, что модуль, и логика ООП это позволяют....
На этом думаю всё...пользуйтесь на здоровье)).