PDA

Просмотр полной версии : function


spartan
05.09.2004, 14:58
Несложный вопрос:
в первом фрейме стоит :

onEnterFrame = function(x)
if(что-то==то-то){
действие
}
}

как я понял, я создал функцию "x" которая с постоянно будет проверять, равно ли "что-то" и "то-то" и выполнять "действие".
Вопрос вот в чём: как удалить или отменить фукцию "х".

derhab
05.09.2004, 16:10
не, ты не создал функцию "х", это функция срабатывает каждый раз при входе в кадр рута или мувика, смотря к чему ты ее прикручиваешь...и не принимает никаких параметров кстати:


_root.onEnterFrame = function(){
if(что-то==то-то){
действие
}else{
delete _root.onEnterFrame
}
}


delete _root.onEnterFrame удаляет функцию

spartan
05.09.2004, 20:33
thanks derhab!!!
А если таймлайн не сдвигается с места то функция не срабатывает???
Также если мы пишем "delete _root.onEnterFrame" то во всём руте все фукнции к которым прикручены "onEnterFrame" удаляются???
Тогда можно ли как-то проименовать функцию чтоб удалять
только её а не все "onEnterFrame" ???
Вообще проблема у меня такая: надо сделать чтобы скрипт в реальном времени следил, например, за какой-то переменной :
как только она изменяется, так сразу происходит событие.
Я решил делать это с помощью функций, но может существует более безгиморный способ???
Заранее спасибо....

artfla$her
06.09.2004, 01:03
function lister() {
trace(arguments[2]);
return (arguments[2]);
}

listener = {myValue: 0};
listener.watch("myValue", lister);

Здесь myValue - свойство объекта listener. К объекту привязывается следящая функция lister, которая запускается при изменении/записи данных в myValue. Обратиться к значению myValue из тела функции можно так - arguments[2]. Функция должна возвращать новое значение свойства - т.е. arguments[2]. arguments в целом здесь равен [свойство, старое значение, новое значение, доп. параметр]

Доп. параметр может передаваться функции, его надо указать в методе watch третьим аргументом. Вот такие пирожки с котятами :)

FreeLander
06.09.2004, 13:56
а вот из хелпа:
// создаём объект
var myObject:Object = new Object();

// добавляем св-во отвечающее за скорость
myObject.speed = 0;

// пишем функцию, которая будет вызваться в случае изменения св-ва "speed"
var speedWatcher:Function = function(prop, oldVal, newVal, speedLimit) {
// проверяем не превышен ли лимит скорости
if (newVal > speedLimit) {
trace ("Вы слишком гоните.");
}
else {
trace ("Едете нормально.");
}

// возвращаем значение в св-во "speed".
return newVal;
}
// используем метод watch() для регистрации события изменения значения св-ва "speed", при этом в качестве параметров передаём:
// - имя св-ва, на изменение которого реагировать: "speed"
// - ссылка на функцию, которая должна при этом срабатывать: speedWatcher
// - предел скорости в качестве дополнительного параметра, определяемого пользователем: 55
myObject.watch("speed", speedWatcher, 55);

// присваиваем св-ву "speed" сначала значение 54, а потом - 57
myObject.speed = 54; // в окне вывода (output): Вы слишком гоните.
myObject.speed = 57; // в окне вывода (output): Едете нормально.

// убираем реакцию на изменение св-ва "speed"
myObject.unwatch("speed");
myObject.speed = 54; // это не вызовет сообщений в окне вывода (output)

dimarik
06.09.2004, 14:01
// присваиваем св-ву "speed" сначала значение 54, а потом - 57
myObject.speed = 54; // в окне вывода (output): Вы слишком гоните.
myObject.speed = 57; // в окне вывода (output): Едете нормально.


Наверно, наоборот.

myObject.speed = 54; // в окне вывода (output): Едете нормально.
myObject.speed = 57; // в окне вывода (output): Вы слишком гоните.

FreeLander
06.09.2004, 14:09
пардон), паст/копи, лень и невнимательность)

spartan
07.09.2004, 15:08
Всем огромное спасибо!
Выручили!