Форум 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=103492)

alexcon314 06.11.2007 15:52

Слежение за переменной
 
Насколько я понимаю, постоянно следить за переменной или свойством объекта (меняет/не меняте свое значение + реакция) можно тремя способами
1. через onEnterFrame
2. через setInterval
3. через object.watch
чем они отличаются, какой из них предпочтительней?
есть ли еще способы?

Pro3ik 06.11.2007 16:02

Цитата:

Сообщение от alexcon314
Насколько я понимаю, постоянно следить за переменной или свойством объекта (меняет/не меняте свое значение + реакция) можно тремя способами
1. через onEnterFrame
2. через setInterval
3. через object.watch
чем они отличаются, какой из них предпочтительней?
есть ли еще способы?

Ну 1-е проверяет каждый проигрываемый кадр - срабатывает ли ваше условие или нет. Тоесть оно срабатывает один раз в каждом кадре.
2 - е следит за временем и срабатывает через определённый промежуток.
Про 3 ничего не скажу - не знаю. Других способов я как бы тоже не знаю но я ещё новичёк.

chingachgoog 06.11.2007 16:22

Постоянно за переменной следит только watch, но он не ловит геттер-сеттер свойства.

А другими обработчиками событий (хоть onEnterFrame, хоть любой другой типа onMouseUp) можно все посмотреть.

alexcon314 06.11.2007 17:17

а какой у watch() принцип работы?

chingachgoog 06.11.2007 18:17

http://flasher.ru/forum/showthread.php?t=93300

Mnilionic 06.11.2007 18:17

он следит за ведомой переменной, и если она изменила своё значение, запускается некая функция
в хелпе подробное описание и примеры

wvxvw 06.11.2007 19:18

Цитата:

Сообщение от chingachgoog
Постоянно за переменной следит только watch, но он не ловит геттер-сеттер свойства.

А другими обработчиками событий (хоть onEnterFrame, хоть любой другой типа onMouseUp) можно все посмотреть.

Гет/сет ни при чем. просто некоторые свойства некоторых классов так устроены. Можно проверять через ASSetPropFlags(). Или еще проще, если delete свойство не может удалить, то и watch его тоже не "увидит". Попробуй delete my_mc._х; =)

// upd
Вернее, даже не совсем так. _х, например, не является в действительности свойстом клипа. У клипа (если никаких свойств ему не добавлять) есть их аж 2, __proto__ и constructor. ASSetPropFlags можно запретить удалять или просматривать какое-то свойство (но им же можно это и разрешить).

etc 06.11.2007 20:10

_x и подобные являются самыми настоящими сеттерами и геттерами. watch не работает с ними.

alexcon314 07.11.2007 08:58

и все-таки, по какому принципу работает watch?
каким образом происходит слежение?
Например, в ентерфрейме проверка "ведомой" переменной запускается с некоторой частотой, в сетинтервале - через нек. промежуток времени, (что делает эти способы похожими друг на друга). эти способы при определенных условиях могут потреблять значительные ресурсы.
Как проверяет watch?
...
как его использовать, про геттер-сеттер - это я знаю, но все равно спасибо

etc 07.11.2007 09:14

Примерно как геттер и сеттер работает.


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

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