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

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

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

Регистрация: May 2003
Адрес: Россия, Тула,...
Сообщений: 14
Question вопрос по destroyObject

Создаю RadioButton'ы в руте:
Код:
rb_d[i]=_root.createClassObject(mx.controls.RadioButton, "rb"+i, i+100, {_x:395,_y:y2,groupName:"g1"});
Потом по нажатии на кнопку должно происходить удаление:
Код:
destroyObject(rb_d[i]);
Но не происходит.
Идиотский вопрос - почему? Depth трейсил - неотрицательный.

Старый 08.04.2007, 03:33
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Потому что i у тебя неправильный.

Старый 08.04.2007, 03:36
Dizel вне форума Посмотреть профиль Отправить личное сообщение для Dizel Найти все сообщения от Dizel
  № 3  
Ответить с цитированием
Dizel

Регистрация: May 2003
Адрес: Россия, Тула,...
Сообщений: 14
? В смысле?
i - переменная цикла, положительная. Какой она тогда должна быть?

Старый 08.04.2007, 03:42
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Стандартные грабли начинающего программера, который полагает, что если он счетчик i написал внутри какой-то функции, объявленной в цикле, то этот самый счетчик i внутри этой функции будет заморожен и иметь значение, равное тому, что было в момент создания функции. Это на самом деле не так, значение i будет равно тому, которое будет после выполнения цикла (т.е. равен n при схеме i<n). Выходом обычно является присвоение объекту в цикле переменной, содержащее текущее значение i, а внутри функции использовать эту переменную.
Код приводить не буду, на эти граблы наступает куча человек и лучше вникнуть и написать код самостоятельно.

Старый 08.04.2007, 03:47
Dizel вне форума Посмотреть профиль Отправить личное сообщение для Dizel Найти все сообщения от Dizel
  № 5  
Ответить с цитированием
Dizel

Регистрация: May 2003
Адрес: Россия, Тула,...
Сообщений: 14
Не, там нет функции. Два независимых цикла откручиваются от 0 до n.
Просто после нажатия на кнопку я прокручиваю массив rb_d и пытаюсь удалить объекты. Т.е. i меняется как ей и положено.
Хотя сейчас попробую.

Старый 08.04.2007, 03:51
Dizel вне форума Посмотреть профиль Отправить личное сообщение для Dizel Найти все сообщения от Dizel
  № 6  
Ответить с цитированием
Dizel

Регистрация: May 2003
Адрес: Россия, Тула,...
Сообщений: 14
Это первый цикл, в котором создаются мувики и соответствующие им радиобаттоны:
Код:
l=category1[0].length;
asd=Array(l);
rb_d=Array(l);
for(i=0;i<l;i++){
	y1=274+30*i;
	y2=283+30*i;
	asd[i]=_root.attachMovie("as", "as"+i, i+1,{_x:400,_y:y1});
	rb_d[i]=_root.createClassObject(mx.controls.RadioButton, "rb"+i, i+100, {_x:395,_y:y2,groupName:"g1"}); 
	trace(rb_d[i]);
	_root.asd[i].part.text=category1[0][i].parts;
	_root.asd[i].item.text=category1[0][i].platform;
}
Это второй цикл, который отрабатывается после нажатия на кнопку, удаляя созданные объекты:
Код:
on (release){
	l=category1[0].length;
	for(j=0;j<l;j++){
		_root.asd[j].removeMovieClip();
		trace(rb_d[j]);
		trace(rb_d[j].getDepth());
		destroyObject(_root.rb_d[j]);
		_root.rb_d[j].destroyObject();
	}
}
Причем _root.asd[j].removeMovieClip(); - отрабатыват нормально.

Старый 08.04.2007, 03:52
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Да, ещё один момент — в destroyObject нужно передавать не ссылку на удаляемый объект, а имя этого объекта.

Код:
on (release){
	l=category1[0].length;
	for(j=0;j<l;j++){
		var o = _root.rb_d[j];
		_root.destroyObject(o._name);
	}
}
Да, и приведи в порядок имена переменных.

Старый 08.04.2007, 04:21
Dizel вне форума Посмотреть профиль Отправить личное сообщение для Dizel Найти все сообщения от Dizel
  № 8  
Ответить с цитированием
Dizel

Регистрация: May 2003
Адрес: Россия, Тула,...
Сообщений: 14
Сенькс, заработало. Видимо я невнимательно хелп читал.

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

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

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


 


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


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