Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Action script 2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=49)
-   -   не вызывается функция (http://www.flasher.ru/forum/showthread.php?t=59414)

olkina 15.06.2004 22:52

не вызывается функция
 
Код:

        function sendXML()
        {
                trace("in sendXML")
                Socket.send(RequestXML);
                Socket.onData = distributeReplays;
        }
       
        private function foo()
        {
                trace("in foo");
        }
       
        private function distributeReplays(replay)
        {
               
                trace("in distributeReplays");
                foo();
        }

В окошке Output я вижу:

in sendXML
in distributeReplays


А foo() не вызывается! И сообщений об ошибках тоже нет... Что я не так делаю?

Елё 15.06.2004 22:57

Думаю что это потому что this другой в момент вызова distributeReplays

Не уверен, но может так сработает:

Код:

function sendXML()
        {
                trace("in sendXML")
                Socket.send(RequestXML);
                Socket.onData = distributeReplays;
                Socket.fooThis = this;
        }
       
        private function foo()
        {
                trace("in foo");
        }
       
        private function distributeReplays(replay)
        {
               
                trace("in distributeReplays");
                this.fooThis.foo();
        }


olkina 16.06.2004 04:48

идея оказалась верной. Он действительно терял this. This для него оказывался сам сокет. Вот так работает:

Код:

        function sendXML()
        {
                trace("in XMLStuff.sendXML")
                Socket.send(RequestXML);
                Socket.onData = distributeReplays;
                Socket.foo = foo;
        }
       
        private function foo()
        {
                trace("in foo");
        }
       
        function distributeReplays(replay)
        {
                trace("in distributeReplays");
                this.foo.call();
        }

спасибо!!!


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

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