Страница 1 из 1

Вопрос по методам

Добавлено: Сб май 23, 2015 11:38 am
Fantom
Не могу разобраться с методами, можете рассказать как работать с ними простыми словами, в частности не могу понять что делают эти команды $this->setProperty, $this->getProperty

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

$volume=round(65535*$params['VALUE']/100);
$this->setProperty('volumeLevel',$params['VALUE']);
safe_exec('..\\apps\\nircmd\\nircmdc setsysvolume '.$volume);
say("Изменилась громкость до ".$params['VALUE']." процентов",0);
 
не могу понять как с помощью метода менять значение (в данном случае громкость) из сценария, пробовал делать так sg("ThisComputer.volumeLevel","50") но громкость не меняется а меняется только значение в системе.
Максимум на что меня хватило написать такой метод, но я подозреваю что это не правильное применение

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

$volume=gg("ThisComputer.MPCVolume");
file_get_contents('http://localhost:13579/command.html?wm_command=-2&volume='.$volume);
 
Подозреваю что надо использовать CallMethod, но не пойму как :(
P.S не планируется ли поддержка Media Player Classic в MajorDomo?
P.P.S Извиняюсь если я спрашиваю элементарные вещи

Re: Вопрос по методам

Добавлено: Пн май 25, 2015 8:59 am
ErmolenkoM
Fantom писал(а):Не могу разобраться с методами, можете рассказать как работать с ними простыми словами,
В системе МажорДоМо есть два вида подпрограмм. Это "Скрипты" и "Методы". И те и другие выполняют код запрограммированный на языке PHP.
Скрипты - это общие( или внешние, или независимые) команды. Методы - это процедуры принадлежащие обьектам.
В Скриптах для доступа к переменным(прочитать или записать значение) используется gg и sg (читать здесь http://smartliving.ru/Main/ProgrammingFunctions), и обязательно указывать имя обьекта.
В Методах допустимо использовать $this->setProperty, $this->getProperty с указанием только имени свойства, но только для того обьекта чей метод мы вызываем.
Например, Есть класс выключателей, есть несколько экземпляров этого класса - обьектов. Пусть при нажатии мы хотим запоминать время последнего нажатия для каждого выключателя, тогда в классе выключателей мы пишем метод с кодом $this->setProperty('Время_последнего_нажатия',_Системное_Время_); теперь привязываем этот метод к изменению состояния свойства On/Off и получим для всех выключателей будет логироваться время последнего нажатия.

Теперь про громкость. МЖД - это вебсайт. Потому громкости быть не может. Есть переменная которая отвечает за громкость, есть код который устанавливает громкость системы в соответствии со значением этой переменной. Для линуха и винды этот код различный. Судя по вопросу "поддержка Media Player Classic" у вас винда. Почему не отрабатывает

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

safe_exec('..\\apps\\nircmd\\nircmdc setsysvolume '.$volume); 
я не знаю.

По вопросу поддержки Media Player Classic наверное вопрос к Сергею http://smartliving.ru/forum/memberlist. ... rofile&u=2