PDA

Просмотр полной версии : Задание функций объъектам, которые будут расположены на timeline дальше


Muchacho
21.10.2005, 17:11
Предположим, создаю я проект, соблюдая принцип целостности кода (т.е., размещая код в одном месте.). Итак, размещаю я код в первом кадре проекта. Но трабл в том, что некоторые объекты, которым я задаю функции (например, реакции на щелчок мышкой), появляются только, в 20-м кадре, и дальше. Как мне решить эту задачу?
Я, конечно, могу сперва вычислять текущий кадр, например:

this.onEnterFrame=function () {
if (_currentframe>=13) {
butt.onMouseDown=function () {
trace(222);
}
}
}
но стоит мне при редактировании ролика переместить эти объекты на другие, более далёкие кадры, и эти команды перестают работать. Вот я и думаю, можно ли как-то перва определять, "появился ли" уже в фильме данный объект, или нет?

Muchacho
21.10.2005, 18:01
Сорри, похоже, всё работает и без всяких проверок, главное, что б функция находилась внутри обработчика onEnterFrame

Muchacho
21.10.2005, 19:13
Нет, не корректный это, похоже, способ. Ведь по-умолчанию, события кнопок, типа onRelease не зависят от частоты кадров, а теперь начинают зависеть.

Так как же задать события для объектов, которые лежат впереди по ходу фильма?

antonyrec
21.10.2005, 19:44
Фильм состоит из кадров. А как ты себе предсталяешь появление объекта между кадрами?

antonyrec
21.10.2005, 19:46
Ты нормальный способ написал.

Штрек
22.10.2005, 01:09
this.onEnterFrame=function () {
if (butt!=undefined) {
butt.onMouseDown=function () {
trace(222);
}
}
}

Muchacho
24.10.2005, 19:27
Спасибо, Штрек, но по моему, будет ещё корректней так:


this.onEnterFrame=function () {
if ((butt!=undefined)&&(butt.onMouseDown==undefined)) {
butt.onMouseDown=function () {
trace(222);
}
}
}


Т.к. не придется в каждом кадре по-новой присваивать значение переменной.

Штрек
24.10.2005, 23:10
this.onEnterFrame = function() {
if (butt != undefined) {
butt.onMouseDown = function() {
trace(222);
};
delete this.onEnterFrame;
}
};

KUZEN
25.10.2005, 00:23
onEnterFrame ваще не есть хорошо (в данном случае) лучше вообще обходиться одним кадром, что не нужно просто скрывать ...

Штрек
25.10.2005, 00:40
onEnterFrame ваще не есть хорошо (в данном случае) лучше вообще обходиться одним кадром, что не нужно просто скрывать ...
Ты не въехал в задачу -
есть один кадр из которого управляется весь большой мув - на сцене куча объектов, в том числе имеющие вложенные объекты, некоторые из которых появляются на сцене только после попадания головки плеера в определённый кадр......
И вот на них то и предлагается повесить обработчик из единственного кадра на сцене....
Единственный выход - выше....

KUZEN
25.10.2005, 00:59
Сорри туплю )))

Muchacho
25.10.2005, 12:19
Штрек, твой вариант (с delete this.onEnterFrame) имеет смысл только если дальше в ролике нет объектов, которым надо присваивать функции.

Штрек
25.10.2005, 12:28
Штрек, твой вариант (с delete this.onEnterFrame) имеет смысл только если дальше в ролике нет объектов, которым надо присваивать функции.
Естественно.....
А ты что думал, что пишется вариант на все случаи жизни?