Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.06.2014, 10:28
firefedot вне форума Посмотреть профиль Отправить личное сообщение для firefedot Найти все сообщения от firefedot
  № 1  
Ответить с цитированием
firefedot
 
Аватар для firefedot

Регистрация: Dec 2010
Сообщений: 129
По умолчанию Функция выводит trace, но не удалеят объект

Доброе...
Ситуация патовая)
Есть функция, которая при выборе ответа на radiobutton должна закрыть окно. Но окно не закрывается и ни каких ошибок нет, трейсы выводятся.
Вот так создаю радиокнопки:
Код AS3:
 
 
		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();
Так их вызываю:
Код AS3:
 
		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);
Вот момент вызова, при столкновении
Код AS3:
 
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);
	}
}
Вот функция radioTest_2:
Код AS3:
 
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);
}
После этого трейсы выводятся, а сам объект не удаляется. Пробовал отдельно удалять радиокнопки, тоже тишина. Ошибок нет, просто трейсы и все.
В чем может быть дело?
А вот если тоже самое использовать на другом объекте, то все работает.
Вот пример рабочего момента в том же приложении:
Код AS3:
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 минут
А если же делаю так:
Код AS3:
conteinerVopros.visible=false;
То он естественно исчезает, но пропадает функционал)
То есть у меня перестает все реагировать на клавиатуру.

Добавлено через 12 минут
stage.focus = stage;
выручил)
Тогда вопрос, то что не удалил, а просто скрыл объект, это же плохо?)
Правда я его еще буду использовать минимум 8 раз...
__________________
--
Какой бы путь ты не выбрал, лягушка прыгнет врятли

Старый 04.06.2014, 13:06
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 2  
Ответить с цитированием
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
Вы так давно изучаете flash, что пора уже перейти в классы!
Вам и самому легче будет и всякие мелочные ошибки пропадут, ну и на Ваши вопросы ответы,
ответы будете получать быстрей.
Ну а так фиг его знает где ошибка, по коду её не видно. И почитайте о циклах, рулоны кода это плохо!

Старый 06.06.2014, 15:17
firefedot вне форума Посмотреть профиль Отправить личное сообщение для firefedot Найти все сообщения от firefedot
  № 3  
Ответить с цитированием
firefedot
 
Аватар для firefedot

Регистрация: Dec 2010
Сообщений: 129
я в классах пишу, нет ни одного символа в кадрах)
а ошибку нашел..
__________________
--
Какой бы путь ты не выбрал, лягушка прыгнет врятли

Старый 06.06.2014, 15:23
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 4  
Ответить с цитированием
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
А почему нет модификаторов доступа у методов? Ведь компилятор должен предупреждения писать.
Или у Вас не строгий режим включен?

Старый 06.06.2014, 16:23
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Может, он просто тут же выскакивает обратно? У Вас "момент вызова" случайно не на ентерфрейм завязан? А то ведь сундук-то никуда не делся, и хиттест опять сработает.
Так же порадовал вывод сообщений о результатах в контейнер, который тут же удаляется... и кому их читать? //conteinerVopros.addChild(vopros_end);
__________________
Reality.getBounds(this);

Старый 06.06.2014, 20:15
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
А почему нет модификаторов доступа у методов? Ведь компилятор должен предупреждения писать.
Автоматически будет internal. Так что можно не писать. Но это не ООП конечно же тогда)) А так ругаться не будет в любом случае
__________________
Марк Tween

Старый 06.06.2014, 20:24
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 7  
Ответить с цитированием
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
Цитата:
А так ругаться не будет в любом случае
У меня FD предупреждает и в output и в result -
Цитата:
Warning: function 'test' will be scoped to the default namespace: Pool: internal. It will not be visible outside of this package.

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:20.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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