Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   глюк компилятора (http://www.flasher.ru/forum/showthread.php?t=162218)

nowhereman86 30.07.2011 21:26

глюк компилятора
 
Ни у кого не возникало такой ситуации, что функция начинается вызываться непрерывно, вместо того, чтобы вызваться только один раз? При этом функция setInterval не используется. Может глюк компилятора? Компилировал в CS5 и CS5.5

TanaTiX 30.07.2011 21:27

Этот глюк называется плохой разработкой.

carrotoff 30.07.2011 21:29

Что-то мне подсказывает, что товарищ TanaTiX, прав.
Вы код свой приложите, пофиксим глюк вашего компилятора

nowhereman86 30.07.2011 21:46

Код AS1/AS2:

var run_getRunStatusForGuest:int;
 
                private function getRunStatusForGuest():void
                {
                        debug_in_play.text ="getRunStatusForGuest";
 
                        var v:URLVariables = new URLVariables();
 
                        var res:String = "func=getRunStatusForGuest&id_table="+String(my_table_id);
                        var s:String = g.em.Crypt(res);
 
                        v['id'] = g.em.GetId();
                        v['param'] = s;
 
                        var ldr:URLLoader = new URLLoader();
                        var request:URLRequest = new URLRequest(req);
                        request.method = URLRequestMethod.POST;
                        request.data = v;
 
                        ldr.addEventListener(Event.COMPLETE,onComplete_getRunStatusForGuest);
                        ldr.load(request);
                }
 
                function onComplete_getRunStatusForGuest(event:Event):void
                { 
                        var loader:URLLoader=event.target as URLLoader;
                        var json_str=String(loader.data);
 
                        json_str = g.em.Decrypt(json_str);
 
                        debug_in_play.text = json_str;
                        var json_data:Array=JSON.decode(json_str);
 
                        if(int(json_data[0].access)==1)
                        {
                                if(int(json_data[0].mode)==2)//если второй режим
                                {
                                        if(int(json_data[0].run)==2)
                                        {
                                                clearInterval(run_getRunStatusForGuest);//очищаем цикл
                                        }
 
                                }
                        }
                        else
                        {
 
                        }
                }

вызывающий код этой функции
Код AS3:

run_getRunStatusForGuest = setInterval(getRunStatusForGuest,2500);

как только получаем в json-строке параметр run=2, функция должна сброситься, однако этого не происходит и она продолжает крутиться

TanaTiX 30.07.2011 22:15

Ну так и что, clearInterval запускается?

nowhereman86 30.07.2011 22:17

Да, эта ветка возникает, но clearInterval не срабатывает и функция продолжает крутиться

Добавлено через 1 минуту
Не знаете можно ли как-нибудь просмотреть список всех функций, которые запущены с помощью функции setInterval?

goodguy 30.07.2011 22:57

Можно вообще отказаться от setInterval

nowhereman86 30.07.2011 23:00

и запускать таймером?

TanaTiX 31.07.2011 00:01

Код AS3:

if(int(json_data[0].run)==2)
                                        {
                                                trace("я запускаю clearInterval");
                                                clearInterval(run_getRunStatusForGuest);//очищаем цикл
                                        }

trace в таком виде сработает?

Wolsh 31.07.2011 01:25

А откуда происходит "запуск"? Может всетаки дело в области видимости переменной run_getRunStatusForGuest? То есть я думаю что происходит setInterval(), потом создается новая переменная, которую собственно и видит clearInterval(), но которая уже никак не идентифицирует запущенный ранее таймер.

Добавлено через 3 минуты
Код AS3:

if(int(json_data[0].run)==2)
{
        trace("я запускаю clearInterval", run_getRunStatusForGuest.toString() );
        clearInterval(run_getRunStatusForGuest);//очищаем цикл
}



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

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