Форум 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 (http://www.flasher.ru/forum/showthread.php?t=116002)

skald 17.09.2008 19:13

:)
две кнопки, две картинки
навел на кнопку, катинка плавно заменяется необходимой:
все хорошо, работает, красиво :confused:
но появилась проблема: прибыстром переходе с одной кнопки на другую, нарушается цикл и работает не правильно.
добавил флаг (cikl). поидее, следующая функция не должна выполняться, пока не закончится предыдущая. Но, получилось, что при резкой смене кнопок он просто останавливается.

ошибка наверно в расположении if (т.к. выполняется проверка после запуска другой функции). Но как его расположить не догоняю.
или может применять onEnterFrame не к this, а к _root.main.clip1/2?? .... вроде так работает, Но при резкой смене кнопок и возврате(1-2-1) картинка остается неизменной. мне в голову приходит только добавить else и флаг ... или использовать другой цикл??


help

Код:

var cikl:Boolean = false;

bot1.onRollOver = function() {
        _root.main.bot1.play();
        if (cikl == false) {
                cikl = true;
                _root.main.clip1.swapDepths(_root.main.etalon);
                this.onEnterFrame = function() {
                        _root.main.clip1.mask1._alpha -= 25;
                        if (_root.main.clip1.mask1._alpha<=0) {
                                _root.main.clip1.mask1._alpha = 0;
                                _root.main.clip2.mask2._alpha = 100;
                                _root.main.clip1.swapDepths(_root.main.etalon);
                                cikl = false;
                                delete this.onEnterFrame;
                        }
                };
        }
};
bot1.onRollOut = function() {
        playBack.apply(bot1);
};
bot2.onRollOver = function() {
        _root.main.bot2.play();
        if (cikl == false) {
                cikl = true;
                _root.main.clip2.swapDepths(_root.main.etalon);
                this.onEnterFrame = function() {
                        _root.main.clip2.mask2._alpha -= 25;
                        if (_root.main.clip2.mask2._alpha<=0) {
                                _root.main.clip1.mask1._alpha = 100;
                                _root.main.clip2.mask2._alpha = 0;
                                _root.main.clip2.swapDepths(_root.main.etalon);
                                cikl = false;
                                delete this.onEnterFrame;
                        }
                };
        }
};


Jewelz 17.09.2008 19:22

Код:

cikl = false;
напиши после
Код:

delete this.onEnterFrame;
а лучше не в теле onEnterFrame, а в конце условия
Код:

if (cikl == false) {

skald 18.09.2008 00:44

Цитата:

Сообщение от Jewelz (Сообщение 764670)
Код:

cikl = false;
напиши после
Код:

delete this.onEnterFrame;

что это даст?
можно ли как-нибуть разместить условие до начала функции?
чтото вроде
Код:

mc.onRollOver.if(условие) = function() {}


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

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