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

sneltyn 16.03.2012 20:31

Ошибка с кнопкой
 
Делаю кнопку, при нажатии она показывает объект, а при повторном нажатии удаляет его. Алгоритм реализации знаю, но выдает ошибку! Почему? И как ее исправить?

Код AS3:

private var bool:Boolean=false;
                        private function microClick(e:Event):void
                        {
 
                                trace(bool);
 
                                var MyShapeExample:MicrophoneList = new MicrophoneList();
                                if(bool==true)
                                {
                                        micro.removeElement(MyShapeExample);
                                        bool=false
                                }
                                        micro.addElement(MyShapeExample);
                                        bool=true               
                        }

Код:

ArgumentError: MicrophoneList89 is not found in this Group.
        at spark.components::Group/getElementIndex()[E:\dev\4.y\frameworks\projects\spark\src\spark\components\Group.as:1457]
        at spark.components::Group/removeElement()[E:\dev\4.y\frameworks\projects\spark\src\spark\components\Group.as:1404]
        at Skype_alternativ/microClick()[E:\Dropbox\webinar test\src\Skype_alternativ.mxml:47]
        at Skype_alternativ/__micro_click()[E:\Dropbox\webinar test\src\Skype_alternativ.mxml:144]

Ну это правда в Флексе

а во флеше все норм:

Код AS3:

var MyShapeExample:ShapeExample = new ShapeExample();
 
 
var bool:Boolean=false;
 
btn.addEventListener(MouseEvent.CLICK, btnClick)
function btnClick(e:Event):void
{
        trace(bool);
        if(bool==true)
        {
                removeChild(MyShapeExample);
                bool=false
        }
        else
        {
                addChild(MyShapeExample);
                bool=true               
        }
}

Ошибся веткой, просьба модераторов перенести данную тему, извините за нарушение правил форума=)

Wolsh 16.03.2012 20:49

Тру-тру-тру? Спасибо))
А в чем смысл этой bool вообще? В красивом разбиении кода на скобочки?

КорДум 16.03.2012 20:51

Просто топикстартеру нужно вынести MyShapeExample в область видимости класса, из области видимости метода. И назвать ее с маленькой буквы нормально.

Wolsh 16.03.2012 20:56

Ну вот смотрите.
Допустим что в начале bool = false.
Мы создали новый MicrophoneList, перешли к условию. Условие не выполнилось, записали (ура!) MicrophoneList в микро. Установили bool = true; Зашибись.
Второй акт: создали новый MicrophoneList (!)
перешли к условию и оно выполнилось, bool == true :)
Говорим: микро, удали наш новый MicrophoneList !
А микро такой: какой такой новый микрофонЛист? Нет у меня никакого нового. Есть правда старый, но вам же его не надо удалять, да?

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

private var _bool:Boolean=false;
private var _myShapeExample:MicrophoneList;
private function microClick(e:Event):void
{
 
                trace(_bool);
                // сначала надо удалить старый, а потом уже создавать новый
                //var MyShapeExample:MicrophoneList = new MicrophoneList();
                if(_bool)
                {
                        micro.removeElement(_myShapeExample);
                }
                _myShapeExample = new MicrophoneList();
                micro.addElement(_myShapeExample);
                _bool = true;               
}


sneltyn 17.03.2012 21:54

Wolsh, и как мне тогда сделать правильно removeElement???

КорДум 17.03.2012 22:12

Я же написал.

sneltyn 17.03.2012 22:16

Я только начал с классами работать и еще немножко не в теме

КорДум 17.03.2012 22:34

Код AS3:

private var MyShapeExample:ShapeExample;
 
private function microClick(e:Event):void
{
        trace(bool);
 
        MyShapeExample = new MicrophoneList();
        if(bool==true)
        {
                micro.removeElement(MyShapeExample);
                bool=false
        }
        micro.addElement(MyShapeExample);
        bool=true               
}


Wolsh 17.03.2012 22:53

КорДум, перечитай мое сообщение. Внимательно. И посмотри на свой код.
sneltyn, перечитай мое сообщение. Внимательно. Там код написан – его видно? Тогда о чем вопрос?

sneltyn 17.03.2012 22:59

Wolsh, ваш код не работает=(


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

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