Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как к переменной подписать слушателя? (http://www.flasher.ru/forum/showthread.php?t=115705)

Mur4ik 08.09.2008 13:58

Как к переменной подписать слушателя?
 
Как к переменной подписать слушателя?
Чтоб при ее изменении в зависимости от значения выполнялась нужная мне функция.
Т.е изменилась переменная и сразу срабатывает событие и выполняется соответствующий код...
Подскажите где копать или лучше пример наглядный с комментами.
Смотрел что есть нечто подобное в Хелпе - зовется watch(), но ничего так и не понял.

qazwsx 08.09.2008 14:19

Создаеш обьект. В нем задаеш параметр например obj.n = 0.
Вешаеш на него watch,
Код:

obj.watch('n', func, 0);
- 'n' - Строка, име обьекта на каторый повешан ватч. func - Функция каторая вызывается при изменении. 0 просто значение каторое ты задаеш func будет вызыватся каждый раз с этим значением в качестве аргумента.

Пишеш функцию
Код:

function func(arg1, arg2, arg3, arg4){};
- arg1 будет n
- arg2 будет предидуше значение obj.n
- arg3 будет новое значение obj.n
- arg4 третий аргумент из watch

marat_sa 08.09.2008 14:20

Делай вызов функции в том месте кода, где изменяешь переменную...

Mur4ik 08.09.2008 14:34

to marat_sa:
Не всегда удобно вызывать функцию где изменяется переменная...
Например есть модальное окно, в зависимости от возвращаемого результата мне нужно вызвать определенную функцию, как дождаться изменения переменной и в том же месте вызвать нужную функцию?

to qazwsx:
Спасибо, уже немного понятней...
Вот только еще момент
- arg1 будет n и - arg3 будет новое значение obj.n т.е они равны?
зачем два одинаковых параметра? или arg1 это имя переменной?

chingachgoog 08.09.2008 15:10

неужели так трудно прочитать про watch в русском хелпе?

Mur4ik 08.09.2008 16:06

Цитата:

Сообщение от chingachgoog (Сообщение 762991)
неужели так трудно прочитать про watch в русском хелпе?

Не понимаю я таких ответов....
Если нечего добавить по теме, то лучше вообще ничего не писАть!

Вопрос же не ставился конкретно по watch...
это как возможный вариант, и спасибо qazwsx что доступно разжевал именно этот метод...

Может вообще на форуме создать правило - типа "то что есть в хелпе и Гугле даже не пытаться спрашивать - иначе растрел!"

chingachgoog 08.09.2008 17:19

А про callback кто спрашивал?

Цитата:

Сообщение от Mur4ik (Сообщение 762984)
- arg1 будет n и - arg3 будет новое значение obj.n т.е они равны?
зачем два одинаковых параметра? или arg1 это имя переменной?

Ответа нет в хелпе что-ли? Или ответ qazwsx более подробный, чем в хелпе? :)

Mur4ik 08.09.2008 17:46

to chingachgoog:
при всем уважении, но спрашивал то я не у Вас... :)
или Вы в секретарях числитесь у qazwsx?... в следующий раз буду знать, чтоб к нему обратиться я это через Вас буду делать.

Если кроме watch больше способов нет отследить изменение переменной,
то всем спасибо, уже разобрался - вопрос можно считать закрытым.

chingachgoog 08.09.2008 18:25

Mur4ik, извините, я вовсе не думал вас не только поучать, но и даже вообще как-то осуждать. Мой вопрос был более исследовательский: в данном вопросе русский хелп настолько запутан?

Жень Шень 08.09.2008 18:42

Привет!
Тоже как-то давно разбирался с watch.
Вот выдержка из хэлпа: "Метод; регистрирует обработчик события, вызываемый в случае, когда свойство объекта изменяется"
В приведеном коде в последней строке значение просто переприсвоино, но watch срабатывает.
Код:

var myObject:Object = new Object();
myObject.speed = 0;
var speedWatcher:Function = function (prop, oldVal, newVal, speedLimit) {
        if (newVal>speedLimit) {
                trace("Вы превышаете.");
        } else {
                trace("Вы не превышаете.");
        }
        return newVal;
};
myObject.watch("speed", speedWatcher, 55);
myObject.speed = 54;
myObject.speed = 57;
myObject.speed = 57;

Вышесказанное написано на правах размышления.


Часовой пояс GMT +4, время: 14:33.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.