![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 129
|
Доброе...
Ситуация патовая) Есть функция, которая при выборе ответа на radiobutton должна закрыть окно. Но окно не закрывается и ни каких ошибок нет, трейсы выводятся. Вот так создаю радиокнопки: public var conteinerVopros:MovieClip = new MovieClip(); public var rbg1_1:RadioButtonGroup = new RadioButtonGroup("radioGroup2"); public var rb1_1:RadioButton = new RadioButton(); public var rb2_1:RadioButton = new RadioButton(); public var rb3_1:RadioButton = new RadioButton(); public var rb4_1:RadioButton = new RadioButton(); rb1_1.group = rbg1_1; rb2_1.group = rbg1_1; rb3_1.group = rbg1_1; rb4_1.group = rbg1_1; rb1_1.move(350,350); rb2_1.move(350,400); rb3_1.move(350,450); rb4_1.move(350,500); if(sunduk_1_0){ if(hero_1.hitTestObject(sunduk_1_0)){ sunduk_1_0.gotoAndStop("open"); addChild(conteinerVopros); conteinerVopros.addChild(afterlvl_2); vopros_end.setError("Вопрос",150,180); conteinerVopros.addChild(vopros_end); rb1_1.label="Горы"; rb2_1.label="Сады"; rb3_1.label="Озера"; rb4_1.label="Заводы"; rb1_1.value=1; rb2_1.value=2; rb3_1.value=3; rb4_1.value=4; rb1_1.move(180,250); rb2_1.move(180,280); rb3_1.move(180,310); rb4_1.move(180,340); rb1_1.width=400; rb2_1.width=400; rb3_1.width=400; rb4_1.width=400; conteinerVopros.addChild(rb1_1); conteinerVopros.addChild(rb2_1); conteinerVopros.addChild(rb3_1); conteinerVopros.addChild(rb4_1); rb1_1.addEventListener(MouseEvent.CLICK, radioTest_2); rb2_1.addEventListener(MouseEvent.CLICK, radioTest_2); rb3_1.addEventListener(MouseEvent.CLICK, radioTest_2); rb4_1.addEventListener(MouseEvent.CLICK, radioTest_2); } } function radioTest_2(event:MouseEvent):void{ var rb_0:RadioButton = event.target as RadioButton; trace(rb_0.value); if(rb_0.value==1){ bal_1+=50; vopros_end.setError("Вы правильно ответили на вопрос",150,210); trace("Верно"); //stage.removeChild(conteinerVopros); if (conteinerVopros.parent) { conteinerVopros.parent.removeChild(conteinerVopros); } В чем может быть дело? А вот если тоже самое использовать на другом объекте, то все работает. Вот пример рабочего момента в том же приложении: if(kassa_end){ if (hero_1.hitTestObject(kassa_end)){ trace("Уровень пройден."); addChild(afterlvl_1); vopros_end.setError("Что такое?",150,210); addChild(vopros_end); rb1.label="α-гипса и β-гипса"; rb2.label="природный материал"; rb3.label="CaSO 4 + 2Н 2 O"; rb4.label="нерастворимый в спирте"; rb1.value=1; rb2.value=2; rb3.value=3; rb4.value=4; rb1.move(180,250); rb2.move(180,280); rb3.move(180,310); rb4.move(180,340); rb1.width=400; rb2.width=400; rb3.width=400; rb4.width=400; addChild(rb1); addChild(rb2); addChild(rb3); addChild(rb4); rb1.addEventListener(MouseEvent.CLICK, radioTest_1); rb2.addEventListener(MouseEvent.CLICK, radioTest_1); rb3.addEventListener(MouseEvent.CLICK, radioTest_1); rb4.addEventListener(MouseEvent.CLICK, radioTest_1); count=0; bal_1=0; timer.stop(); timer.reset(); time_field.text="0:00"; } } ... function radioTest_1(event:MouseEvent):void{ var rb:RadioButton = event.target as RadioButton; trace(rb.value); if(rb.value==1){ trace("Верно"); container_lvl_1.removeChild(kassa_end); kassa_end=null; bal_1+=200; if(bal_1>max_bal_lvl_1){ max_bal_lvl_1=bal_1; max_bal_1.setMaxBal(max_bal_lvl_1+"/380",160,80); removeEventListener(Event.ENTER_FRAME, speedPers); stage.removeEventListener(KeyboardEvent.KEY_DOWN, downPers); stage.removeEventListener(KeyboardEvent.KEY_UP, upPers); container_lvl_1.removeChild(hero_1); hero_1=null; vopros_end.setError("Вы правильно ответили на вопрос, а так же набрали "+max_bal_lvl_1+" балов",150,210); removeChild(rb1); removeChild(rb2); removeChild(rb3); removeChild(rb4); afterlvl_1.close_afterlvl.addEventListener(MouseEvent.CLICK, goodLVL); } else {trace(bal_1+"<"+max_bal_lvl_1);} }else { trace("Не верно"); container_lvl_1.removeChild(kassa_end); kassa_end=null; removeEventListener(Event.ENTER_FRAME, speedPers); stage.removeEventListener(KeyboardEvent.KEY_DOWN, downPers); stage.removeEventListener(KeyboardEvent.KEY_UP, upPers); container_lvl_1.removeChild(hero_1); hero_1=null; vopros_end.setError("Вы неверно ответили на вопрос, попробуйте испытать свои силы еще раз.",150,210); removeChild(rb1); removeChild(rb2); removeChild(rb3); removeChild(rb4); afterlvl_1.close_afterlvl.addEventListener(MouseEvent.CLICK, fatalLVL); } } function fatalLVL(event:MouseEvent):void{ removeChild(afterlvl_1); removeChild(container_lvl_1); afterlvl_1.close_afterlvl.removeEventListener(MouseEvent.CLICK, fatalLVL); addChild(game_menu); } function goodLVL(event:MouseEvent):void{ removeChild(afterlvl_1); removeChild(container_lvl_1); afterlvl_1.close_afterlvl.removeEventListener(MouseEvent.CLICK, fatalLVL); addChild(game_menu); game_menu.addChild(gotovo); } Спасибо. Добавлено через 9 минут А если же делаю так: То он естественно исчезает, но пропадает функционал) То есть у меня перестает все реагировать на клавиатуру. Добавлено через 12 минут stage.focus = stage; выручил) Тогда вопрос, то что не удалил, а просто скрыл объект, это же плохо?) Правда я его еще буду использовать минимум 8 раз...
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли |
|
|||||
|
[+1 22.07.14]
[+4 12.08.14] [+1 09.02.15] Регистрация: May 2014
Сообщений: 182
|
Вы так давно изучаете flash, что пора уже перейти в классы!
Вам и самому легче будет и всякие мелочные ошибки пропадут, ну и на Ваши вопросы ответы, ответы будете получать быстрей. Ну а так фиг его знает где ошибка, по коду её не видно. И почитайте о циклах, рулоны кода это плохо! |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 129
|
я в классах пишу, нет ни одного символа в кадрах)
а ошибку нашел..
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли |
|
|||||
|
[+1 22.07.14]
[+4 12.08.14] [+1 09.02.15] Регистрация: May 2014
Сообщений: 182
|
А почему нет модификаторов доступа у методов? Ведь компилятор должен предупреждения писать.
Или у Вас не строгий режим включен? |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Может, он просто тут же выскакивает обратно? У Вас "момент вызова" случайно не на ентерфрейм завязан? А то ведь сундук-то никуда не делся, и хиттест опять сработает.
Так же порадовал вывод сообщений о результатах в контейнер, который тут же удаляется... и кому их читать? //conteinerVopros.addChild(vopros_end);
__________________
Reality.getBounds(this); |
|
|||||
|
[+4 06.05.14]
|
Цитата:
__________________
Марк Tween |
|
|||||
|
[+1 22.07.14]
[+4 12.08.14] [+1 09.02.15] Регистрация: May 2014
Сообщений: 182
|
Цитата:
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 13:20. |
|
|
« Предыдущая тема | Следующая тема » |
|
|