Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > Общие вопросы

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 17.09.2004, 19:55
Deviant вне форума Посмотреть профиль Отправить личное сообщение для Deviant Найти все сообщения от Deviant
  № 11  
Deviant

Регистрация: Feb 2004
Сообщений: 36
(к сказанному выше) У меня Flash MX.

Старый 18.09.2004, 02:17
Штрек вне форума Посмотреть профиль Отправить личное сообщение для Штрек Найти все сообщения от Штрек
  № 12  
Штрек

Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
Цитата:
Оригинал написал(а) Deviant
Спасибо.

Авот тут говорится про какой-то хелп. Он на русском? Где его можно посмотреть?
Ага. Вот только щас перевёл...

Object.watch

Доступность


Flash Player 6.

Синтаксис


myObject.watch( prop, callback [, userData] )
Параметры


prop Строка, указывающая имя наблюдаемого свойства объекта.

callback Функция, вызываемая при изменении наблюдаемого свойства. Этот параметр является функцией (как объект), а не ее именем в строковом виде. Форма для callback - callback(prop, oldval, newval, userData).

userData произвольный фрагмент ActionScript данных, передаваемых методу callback. Если параметр userData отсутствует, то методу передается undefined. Это необязательный параметр.

Возвращается


Значение true, если "наблюдатель" (watchpoint) был успешно создан, в противном случае - false.

Описание


Метод, определяет callback функцию (функцию обратного вызова), вызываемую, если изменилось указанное свойство ActionScript объекта. Когда свойство изменяется, callback функция вызывается с myObject как содержащий объект.

Наблюдатель может фильтровать (или аннулировать) передаваемое значение, возвращая модифицированный newval (или oldval). Если удалить свойство, отслеживаемое наблюдателем, сам наблюдатель от этого не пострадает. Если в последствии восстановить удаленное свойство, наблюдатель будет опять функционировать. Для удаления наблюдателя используется метод Object.unwatch.

Только один наблюдатель может быть подключен к свойству. Последовательные вызовы Object.watch к одному и тому же свойству будут просто заменять наблюдателя.

Метод Object.watch ведет себя подобно функции Object.watch в Netscape JavaScript 1.2 и более поздних версиях. Основное отличие в параметре userData, который добавлен во Flash в Object.watch, не поддерживаемый в Netscape Navigator. Можно передавать параметр userData в callback функцию и использовать его в ней.

Метод Object.watch не может наблюдать за геттер/сеттер (getter/setter) свойствами. Они управляются через "ленивое определение" — значение свойства заранее не определено до тех пор, пока оно не вызвано. "Ленивое определение" часто является эффективным, т.к. свойство постоянно не меняется и достаточно отслеживать его состояние только в момент запроса. Однако Object.watch осуществляет постоянное наблюдение, поэтому для работы с геттер/сеттер свойствами этот метод неэффективен.

Вообще, ActionScript предопределенные свойства, типа _x, _y, _width и _height являются геттер/сеттер свойствами и они не могут быть отслежены методом Object.watch.

Пример


Этот пример показывает компонент CheckBox с методами, устанавливающими метку и значение каждого экземпляра чекбокса:

myCheckBox1.setValue(true);
myCheckBox1.setLabel("new label");
...
Удобно думать о значении и метке чекбокса, как о его параметрах. Возможно использовать Object.watch для доступа к значению и метке как к свойствам, а не вызовами методов, тек как это сделано ниже:

// Определение конструктора для CheckBox класса
function CheckBox() {
...
this.watch ('value', function (id, oldval, newval)) {
...
}
this.watch ('label', function (id, oldval, newval)) {
...
}
}
При изменении значения или метки, вызывается функция, определенная в компоненте, которая выполняет необходимые действия по его обновлению. Следующее выражение использует обработчик Object.watch, чтобы сообщить компоненте об изменении значения.

myCheckBox1.value = false;
Следующий синтаксис более краткий, чем предыдущий:

myCheckBox1.setValue(false);

Старый 11.11.2004, 17:23
Deviant вне форума Посмотреть профиль Отправить личное сообщение для Deviant Найти все сообщения от Deviant
  № 13  
Deviant

Регистрация: Feb 2004
Сообщений: 36
По умолчанию watch() - не срабатывает, если мувик экспортировать как для Flash5. Почему?

Всем приветы!

Есть у меня мувик, из примеров, с птичкой. Я хочу привязаться к событию на изменения переменной, отвечающей за вращение. Делаю это примерно следующим образом:
Код:
rotateData = "22";

function onRotateData(prop, oldVal, newVal, userData)
{
	setProperty("", _alpha, "50");
	fscommand("ANSWER", "onRotateData");
	gotoAndStop(2);
}

watch("rotateData", onRotateData);
stop();
У меня Flash MX. Это все работает, если экспортировать мувик, как для Flash 6, но не работает для Flash 5. Он не знает о watch. Как заставить это работать в любой (в как можно больше) версии Flash? Чем заменить watch?

Старый 11.11.2004, 19:27
FreeLander вне форума Посмотреть профиль Отправить личное сообщение для FreeLander Найти все сообщения от FreeLander
  № 14  
FreeLander
 
Аватар для FreeLander

Регистрация: Jan 2004
Адрес: нигде - не осталось на Земле свободных земель(
Сообщений: 1,176
По умолчанию Re: watch() - не срабатывает, если мувик экспортировать как для Flash5. Почему?

Цитата:
Оригинал написал(а) Deviant
У меня Flash MX. Это все работает, если экспортировать мувик, как для Flash 6, но не работает для Flash 5. Он не знает о watch.
и не должен знать:
Цитата:
Object.watch()
Availability
Flash Player 6.
Цитата:
Оригинал написал(а) Deviant
Как заставить это работать в любой (в как можно больше) версии Flash? Чем заменить watch?
имхо нет необходимости отказываться от watch. но если есть желание, то придётся просто сделать мувик, который будет крутить кадровый цикл с проверкой изменения переменной, я во всяком случае до появления 6-ой версии делал именно так, возможно есть менее неуклюжий способ, но я его не знаю


Последний раз редактировалось FreeLander; 11.11.2004 в 19:31.
Старый 11.11.2004, 19:48
Deviant вне форума Посмотреть профиль Отправить личное сообщение для Deviant Найти все сообщения от Deviant
  № 15  
Deviant

Регистрация: Feb 2004
Сообщений: 36
Ясно...спасибо.
Хотя, хочется чего-то более красивого...

Создать новую тему   Часовой пояс GMT +4, время: 08:40.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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