Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   через if не выполняется функция (http://www.flasher.ru/forum/showthread.php?t=167568)

GrafMine 11.09.2011 20:46

через if не выполняется функция
 
Есть два варианта кода:


1.В первом варианте все работает замечательно но запуск функции не там где надо.
Код AS3:

private function eFrameEvents(e:Event):void {
            trace(1);
            moneyUp();//<----- если стоит тут все прекрасно работает,но смысл ей тут стоять по коду нет.
            if(health <= 0){
                    trace(2);
                    if (this.parent) {
                            trace(3);                       
                          this.parent.removeChild(this);
                          trace(4);
                    }
                        this.removeEventListener(Event.ENTER_FRAME, eFrameEvents);           
            }
        }
        public function moneyUp():void {
          trace(5);           
          var _e:WidgetEvent = new WidgetEvent(WidgetEvent.SERVICE_SELECT);
            _e.value = 0;
            dispatchEvent(_e);
          trace(6);
        }


2.Во втором варианте функция moneyUp(); находится где положено и нужно по коду, но в другом классе он его не ловит...
Код AS3:

private function eFrameEvents(e:Event):void {
            trace(1);
            if(health <= 0){
                    trace(2);
                    if (this.parent) {
                            trace(3);                       
                            moneyUp();//<---- стоит теперь тут, но не ловит в другом классе событие
                          this.parent.removeChild(this);
                          trace(4);
                    }
                        this.removeEventListener(Event.ENTER_FRAME, eFrameEvents);           
            }
        }
        public function moneyUp():void {
          trace(5);           
          var _e:WidgetEvent = new WidgetEvent(WidgetEvent.SERVICE_SELECT);
            _e.value = 0;
            dispatchEvent(_e);
          trace(6);
        }

Сразу скажу что абсолютно все цифры трейсятся, в двух вариантах.
Кто сталкивался с такой проблемой, и с чем она может быть вызвана?

GBee 11.09.2011 21:35

Может проблема в том, кто его ловит?

GrafMine 11.09.2011 21:41

Цитата:

Сообщение от GBee (Сообщение 1030380)
Может проблема в том, кто его ловит?

Код AS3:

var _instance:Target = new Target(tT);
_instance.addEventListener(WidgetEvent.SERVICE_SELECT, settingsHandler);
 
                public function settingsHandler(e:WidgetEvent):void {
                        trace(' :( ');//<- в первом варианте трейсит в отличии от второго
                        switch(e.value) {
                                case 0: {
                                        //...
                                        break;
                                }
                        }
                }


cleptoman 11.09.2011 21:45

Код AS3:

var _instance:Target = new Target(tT);

а покажите код конструктора

Добавлено через 1 минуту
и еще..if у вас сработает при наличии экзепляра в дисплей листе..а судя по последнему куску кода вы его туда не добавляете.

GrafMine 11.09.2011 21:56

Цитата:

Сообщение от cleptoman (Сообщение 1030383)
Код AS3:

var _instance:Target = new Target(tT);

а покажите код конструктора

Добавлено через 1 минуту
и еще..if у вас сработает при наличии экзепляра в дисплей листе..а судя по последнему куску кода вы его туда не добавляете.

Куда я только не пробовал его вставить этот код:
Код AS3:

var _instance:Target = new Target(tT);

хоть в самое начало хоть в самый конец,и в ентер фрейме пробовал...
кода очень много и не особо хотел бы его весь выкладывать ...
Интересует вопрос а куда его нужно добавить ?)

Bgg 11.09.2011 21:58

Breakpoint вас спасет.

GrafMine 11.09.2011 22:40

Цитата:

Сообщение от Bgg (Сообщение 1030388)
Breakpoint вас спасет.

В первые слышу о таком, поискал немного в гугле и мало по нем русского FAQ а если и есть то в "двух словах", не могли бы вы рассказать или показать пример применения для моего случая?

Bgg 11.09.2011 22:42

http://help.adobe.com/ru_RU/Flash/10...c34-7fb3a.html

GrafMine 11.09.2011 23:55

Цитата:

Сообщение от Bgg (Сообщение 1030392)

Какой-то темный лес :)))
Почитав что написано в вашей ссылке написано для чего он вообще:
Цитата:

Например, если имеется набор операторов if..else if и невозможно определить, какой из них выполняется, то перед этими операторами можно добавить точки останова и проверять их по одной (перемещаться по ним) в отладчике.
Я могу ошибаться но у меня всего один if кто если не он выполняется ?
И на сколько я понял это помощник для нахождения ошибок в громадных исходниках где одновременно выполняются множество операторов, разве это мой случай?

Эх,странные случаи иногда бывают в программировании,боюсь что выход с моей ситуации поможет решить только тот кто сталкивался с этим ранее :(

-De- 12.09.2011 00:22

Отладчик - это совершенно базовая вещь, а не тёмный лес. Если у вас не громадный исходник, то к чему вопросы? Более того - эти ваши трейсы тоже отладчик своего рода.
Что же у вас не так понять нормальный человек не в состоянии. Если все цифры трейсятся - значит всё работает. Если не все и не так - значит соответствующие условия не выполняются. Поможет дружба с логикой.


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

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