Форум 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=141685)

Worfollomey 01.07.2010 23:54

событие в условии
 
Здравствуйте. У меня вопрос. Почему когда я создаю условие и прописываю события в
нем, они работают и после того как условие не выполняется.
Пример:
я создал CheckBox присвоил ему слушатель событий по клику мишки. в функции
слушателя указал условие, если CheckBox выбран то выполняем следующие события,
дальше пишу обратное условие, если CheckBox не выбран то выполняем следующие
события. Тестирую и вижу что те события которые выполняются при выбранном CheckBox
работают постоянно, стоит лишь выбрать CheckBox один раз. Возможно есть метод
который останавливает эти события? Хотя странно как-то, ведь они прописаны в условии
и должны останавливаться как только условие не выполняется. Или я не прав? Объясните
пожалуйста.

КорДум 02.07.2010 00:50

Без кода здесь не разберешься. Выложите код.

Worfollomey 02.07.2010 03:21

Код AS3:

var ChBo:CheckBox = new CheckBox(); 
addChild(ChBo);
ChBo.addEventListener(MouseEvent.CLICK, onClickCheck);
function onClickCheck(e:MouseEvent):void
{
        if (ChBo.selected == false)
        {
                var q:Number = 0;
                RbGr.addEventListener(Event.CHANGE, changeHandler);
                function changeHandler(e:Event):void
                {
                        aCb.removeAll();
                        q=Number(RbGr.selectedData);
                        trace(q);
                        for (var i:int=1; i <= q; i++)
                        {
                                aCb.addItemAt({label:"Позиция" + i, data:"position" + i}
                                                      aCb.length);
                        }
                }               
        }
        else if (ChBo.selected == true)
        {
                var date:Date = new Date();
                trace(date.getHours()+":"+date.getMinutes());
        }
}

ну вот как пример.

Hidest 02.07.2010 03:32

При беглом осмотре ничего подозрительного не заметил... А это у вас, случаем, не в ENTER_FRAME стоит?

И как совет - не используйте анонимных функций (что-то в последнее время прямо наметился какой-то нездоровый тренд на них...) да и в можно использовать просто if (ChBo.selected) (то же самое, что и if (ChBo.selected == true) )

Котяра 02.07.2010 03:41

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

Zebestov 02.07.2010 04:47

в блоке else if надо, соответственно, сделать
Код AS3:

RbGr.removeEventListener(Event.CHANGE, changeHandler);

ну и, разумеется, вынести этот самый changeHandler() за пределы onClickCheck(), как было сказано ранее.
и вообще хорошо бы привести весь код в порядок.

Worfollomey 02.07.2010 12:51

Всем спасибо. понял свой косяк. По причине отсутствия опыта мне казалось что функции слушателя событий должна находиться там же где и слушатель, оказывается чтобы все верно работало все функции надо выносить а слушатель событий на нее будет ссылаться. Буду знать. Теперь все работает.


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

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