Форум 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)
-   -   Задание функций объъектам, которые будут расположены на timeline дальше (http://www.flasher.ru/forum/showthread.php?t=70768)

Muchacho 21.10.2005 17:11

Задание функций объъектам, которые будут расположены на timeline дальше
 
Предположим, создаю я проект, соблюдая принцип целостности кода (т.е., размещая код в одном месте.). Итак, размещаю я код в первом кадре проекта. Но трабл в том, что некоторые объекты, которым я задаю функции (например, реакции на щелчок мышкой), появляются только, в 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

Цитата:

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

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


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

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