Форум 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)
-   -   Обработка событий onEnterFrame и onRollOver (http://www.flasher.ru/forum/showthread.php?t=109187)

vladya 09.03.2008 21:05

Обработка событий onEnterFrame и onRollOver
 
Собственно имеется код:
Код:

b.back.onEnterFrame = function () {
                        if (this.onRollOver) {
                                trace ("Курсор в зоне");
                                this.nextFrame();
                        } else {
                                this.prevFrame();
                        }
                }

В данном случае не срабатывает событие onRollOver. Не могу понять в чем беда?

Fann 09.03.2008 21:15

Код:

b.back.onRollOver=function(){
  trace ("Курсор в зоне");
  this.nextFrame();
}
b.back.onRollOut=function(){
  this.prevFrame();
}


vladya 09.03.2008 21:40

Нужно чтобы при наведении курсора мувиклип проигрывался вперед, а когда он покидает его зону, то мувиклип проигрывается назад.

iNils 09.03.2008 21:44

onRollOver это событие, а не свойство, поэтому писать if (this.onRollOver) бесполезно
Код:

b.back.onEnterFrame = function () {
        if (this.flag) {
                trace ("Курсор в зоне");
                this.nextFrame ();
        } else {
                this.prevFrame ();
        }
};
b.back.onRollOver = function () {
        this.flag = true;
};
b.back.onRollOut = function () {
        this.flag = false;
};
b.back.onReleaseOutside = b.back.onRollOut;


Czar 13.03.2008 19:08

а может ещё подскажите как можно сделать, чтобы скажем при нажатии на кнопку мувик двигался вперёд до конца, а при повторном нажатии, чтобы он возвращался,НО не вначало, а до определённого фрэйма...
точнее как, я то понял, но у меня почему-то возможнонажать на кнопку лишь два раза, а потом ничего не происходит...
Код:

var flag:Boolean = false;

btnGalery.onRelease = function() {
        if (flag) {
                flag = false;
                _root.onEnterFrame = function() {
                        if (_root._currentframe>6) {
                                this.prevFrame();
                        }
                };
        } else {
                play();
                flag = true;
        }
};

суть фильма такова:
есть 15 кадров, до 5 как бы идёт прорисовка картины и останавливается.
потом при нажатии на кнопку btnGalery происходит проигрывание до конца(там всякие штуки появляются ещё) и вконце останавливаеться опять, потом при повторном нажатии на данную кнопку фильм в обратном порядке возвращаеться на 5 кадр... всё так и происходит,Но после возвращения кнопка перестаёт реагировать. Почему?

iNils 13.03.2008 19:22

Исходник покажите.

Czar 13.03.2008 19:35

Вложений: 1
вот исходник

crazyone 13.03.2008 19:43

Код:

var flag:Boolean = false;

btnGalery.onRelease = function() {
        if (flag) {
                flag = false;
                _root.onEnterFrame = function() {
                        if (_root._currentframe>6) {
                                this.prevFrame();
                        }
                };
        } else {
                delete _root.onEnterFrame;
                play();
                flag = true;
        }
};


iNils 13.03.2008 19:51

Поменяйте структуру.
Основной таймлайн сделайте однокадровым. А всю анимацию из него вынесите в отдельные мувиклипы.

Czar 13.03.2008 20:02

и что это поменяет?
или просто гонять туда сюда в мувиклипе?то есть то движение, что я хочу сделать мувиклипом, а потом гонять туда сюда его??

iNils 13.03.2008 20:23

Это глобальный совет на все проекты. Это уменьшит число ваших ошибок. Весь управляющий код лучше размещать в однокадровом таймлайне (или 2-3 кадровом, если вы используейте прелоадер и переходите только вперед). В таймлайне с анимацией, должен быть только простой управляющий код. Типа stop(), flag = true|false или запуск пользовательского события.

А когда вы начинаете смешивать код и тамлайн, сложность, количество ошибок, путаница, растут как снежные ком.

Czar 14.03.2008 13:25

Цитата:

Сообщение от crazyone
Код:

var flag:Boolean = false;

btnGalery.onRelease = function() {
        if (flag) {
                flag = false;
                _root.onEnterFrame = function() {
                        if (_root._currentframe>6) {
                                this.prevFrame();
                        }
                };
        } else {
                delete _root.onEnterFrame;
                play();
                flag = true;
        }
};


оооо заработало... спасибо... вчера не увидел твой пост, накатал уже ещё парочку вопросов..
что ж буду дальше париться:))


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

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