Слайдер, значение которого привязано к результату метода

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

TbIKBA
Сообщения: 21
Зарегистрирован: Пн фев 29, 2016 10:21 pm
Благодарил (а): 0
Поблагодарили: 3 раза

Слайдер, значение которого привязано к результату метода

Сообщение TbIKBA » Ср сен 28, 2016 2:39 pm

Привет! Есть слайдер, его текущее значение должно зависеть не от связанного свойства, а от результата работы метода определенного объекта. Метод через return возвращает число. Как это можно реализовать? Я пробовал делать "Связанный объект -> метод", но устанавливается не то значение, которое отдает метод.

Изображение

И, соответственно, второй вопрос - возможно ли при изменении значения слайдера вызывать метод с параметром (значение слайдера)? Я знаю, что теоретически это можно сделать через дополнительный сценарий, но подозреваю, что должна быть логическая реализация без дополнительного звена.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Слайдер, значение которого привязано к результату метода

Сообщение sergejey » Ср сен 28, 2016 5:33 pm

TbIKBA писал(а):Привет! Есть слайдер, его текущее значение должно зависеть не от связанного свойства, а от результата работы метода определенного объекта. Метод через return возвращает число. Как это можно реализовать? Я пробовал делать "Связанный объект -> метод", но устанавливается не то значение, которое отдает метод.
И, соответственно, второй вопрос - возможно ли при изменении значения слайдера вызывать метод с параметром (значение слайдера)? Я знаю, что теоретически это можно сделать через дополнительный сценарий, но подозреваю, что должна быть логическая реализация без дополнительного звена.
1. Если в результате работы метода он устанавливает значение в связанное свойство, то слайдер должен соответственно изменять положение.

2. Если в слайдере указан связанный метод, то в коде метода можно использовать значение $params['VALUE'] -- оно передаётся методу независимо от привязанного свойства

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
TbIKBA
Сообщения: 21
Зарегистрирован: Пн фев 29, 2016 10:21 pm
Благодарил (а): 0
Поблагодарили: 3 раза

Re: Слайдер, значение которого привязано к результату метода

Сообщение TbIKBA » Ср сен 28, 2016 6:07 pm

1. Если в результате работы метода он устанавливает значение в связанное свойство, то слайдер должен соответственно изменять положение.
Нет, в данном случае невозможно использовать связанное свойство, т.к значение слайдера может зависеть от двух свойств объекта. Поэтому был написан метод, который в зависимости от этих свойств возвращает нужное значение.
2. Если в слайдере указан связанный метод, то в коде метода можно использовать значение $params['VALUE'] -- оно передаётся методу независимо от привязанного свойства
Метод используется не только для работы слайдера, поэтому я не могу переписать его под входные данные одного $params. А если использовать не связанный объект, а блок с PHP кодом (в сцене), возможно ли при описании элемента сцены использовать параметр значения слайдера?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Слайдер, значение которого привязано к результату метода

Сообщение sergejey » Вс окт 02, 2016 2:00 pm

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
TbIKBA
Сообщения: 21
Зарегистрирован: Пн фев 29, 2016 10:21 pm
Благодарил (а): 0
Поблагодарили: 3 раза

Re: Слайдер, значение которого привязано к результату метода

Сообщение TbIKBA » Вс окт 02, 2016 3:51 pm

Я понимаю, что можно сделать через третье свойство :) Хорошо, я понял, спасибо.
Тогда такой вопрос - при вызове сценария из сцены возможно ли указать дополнительные параметры вместе с параметром значения слайдера?

В данный момент у меня 4 точки со светом, планирую расширить до 6. Для каждой точки делаю слайдер для диммирования света. Используются модули Noolite.

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

Пока единственным решением вижу создание под каждый модуль отдельного сценария, но это костыль.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Слайдер, значение которого привязано к результату метода

Сообщение sergejey » Вс окт 02, 2016 9:17 pm

Вместо указания того, какой скрипт выполнить при клике, вы можете ввести код, который вызовет нужный вам скрипт и там вы уже можете легко передать дополнительный параметр, например:
runScript('MyScript',array('MyParam'=>'MyValue'));

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Слайдер, значение которого привязано к результату метода

Сообщение nick7zmail » Пн окт 03, 2016 9:49 am

Лично у меня реализовано так:
Есть классовый метод, который отвечает за диммирование каналов, у каждого объекта в классе есть значение канала, значение яркости, и значение статуса. Соответственно, на каждый объект свой слайдер, а канал для диммирования берется из свойства активного объекта...для меня это просто нагляднее.

Как я понял, вы хотите 1м слайдером регулировать яркость всех каналов, и есть элемент на сцене, определяющий канал.
Как вариант - делаете 1 объект (не объекты на каждый канал, а 1 общий, раз 1 слайдер нужен), у него исполняемый метод... И свойство, привязанное к вашему определяющему_канал_элементу (к примеру ActiveCh) не привязанное ни к какому методу, а когда запускаете метод на диммирование - канал берете через gg('ваш_объект.ActiveCh');
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
TbIKBA
Сообщения: 21
Зарегистрирован: Пн фев 29, 2016 10:21 pm
Благодарил (а): 0
Поблагодарили: 3 раза

Re: Слайдер, значение которого привязано к результату метода

Сообщение TbIKBA » Пн окт 03, 2016 10:30 pm

sergejey писал(а):Вместо указания того, какой скрипт выполнить при клике, вы можете ввести код, который вызовет нужный вам скрипт и там вы уже можете легко передать дополнительный параметр, например:
runScript('MyScript',array('MyParam'=>'MyValue'));
Это понятно. Как вместе с дополнительным параметром передать VALUE слайдера? Оно передается автоматически только при привязке метода/сценария. Если в массиве указать просто "VALUE", то передается VALUE=0, если его в массиве не указывать, то этот параметр и не передается. В вашем примере будет передаваться только MyParam, я проверял через X-ray
Последний раз редактировалось TbIKBA Пн окт 03, 2016 10:41 pm, всего редактировалось 1 раз.
TbIKBA
Сообщения: 21
Зарегистрирован: Пн фев 29, 2016 10:21 pm
Благодарил (а): 0
Поблагодарили: 3 раза

Re: Слайдер, значение которого привязано к результату метода

Сообщение TbIKBA » Пн окт 03, 2016 10:40 pm

nick7zmail писал(а):Лично у меня реализовано так:
Есть классовый метод, который отвечает за диммирование каналов, у каждого объекта в классе есть значение канала, значение яркости, и значение статуса.
У меня реализовано точно также :) (оффтоп - только вместо одного свойства пришлось сделать два, т.к у Noolite нет обратной связи и узнать актуальный уровень яркости невозможно. Соответственно, когда выключаешь диммер через turnOff, то яркость становится 0, а когда включаешь обратно через turnOn.. то не знаешь актуальное значение яркости, т.к оно хранится внутри диммера.).
Как я понял, вы хотите 1м слайдером регулировать яркость всех каналов, и есть элемент на сцене, определяющий канал.
Нет, я хочу с помощью слайдеров регулировать яркость, и хочу узнать как написать один общий скрипт, вместо большого количества скриптов под каждый слайдер (под каждый диммер). Для этого в скрипт нужно передать и значение яркости слайдера и дополнительный параметр, который скажет скрипту какой из диммеров использовать.

Я могу написать под каждый слайдер сценарий, но это неправильно
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Слайдер, значение которого привязано к результату метода

Сообщение sergejey » Вт окт 04, 2016 1:36 pm

TbIKBA писал(а):
sergejey писал(а):Вместо указания того, какой скрипт выполнить при клике, вы можете ввести код, который вызовет нужный вам скрипт и там вы уже можете легко передать дополнительный параметр, например:
runScript('MyScript',array('MyParam'=>'MyValue'));
Это понятно. Как вместе с дополнительным параметром передать VALUE слайдера? Оно передается автоматически только при привязке метода/сценария. Если в массиве указать просто "VALUE", то передается VALUE=0, если его в массиве не указывать, то этот параметр и не передается. В вашем примере будет передаваться только MyParam, я проверял через X-ray
Можно ещё так попробовать код вызывать:

Код: Выделить всё

runScript('MyScript',array('MyParam'=>'MyValue','VALUE'=>$params['VALUE'])); 

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ответить