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

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

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

Регистрация: Dec 2008
Адрес: Севастополь
Сообщений: 112
Отправить сообщение для cdc7600 с помощью ICQ
По умолчанию Как удалить экземпляры класса?

Здравствуйте, возник вопрос,
создаю экземпляры класса из XML и добавляю на сцену, а как их удалить все? или хотя бы сделать невидимыми
Код AS3:
var loader:URLLoader = URLLoader(event.target);
externalXML = new XML(loader.data);
 
XMLlist = externalXML.children();
for (var i:Number = 0; i < XMLlist.length(); i++) {
	item = new Item( externalXML.country[i].image,  externalXML.country[i].url, externalXML.country[i].countryname );
	addChild(item);
	item.x = externalXML.country[i].x;
	item.y = externalXML.country[i].y;
}
__________________
cdc7600.livejournal.com


Последний раз редактировалось udaaff; 17.06.2010 в 19:27.
Старый 17.06.2010, 19:24
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 2  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 cdc7600:
Почитайте про метод
DisplayObjectContainer.removeChild().

Удалить все:
Код AS3:
while (container.numChildren > 0)
{
	container.removeChildAt(0);
}
Скрыть те, которые являются экземплярами класса Item (записал растянуто):
Код AS3:
for (var i:uint = 0; i < container.numChildren; i++)
{
	var child:DisplayObject = container.getChildAt(i);
	if (child is Item)
	{
		var item:Item = child as Item;
		item.visible = false;
	}
}
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого


Последний раз редактировалось Хемуль; 17.06.2010 в 19:31.
Старый 17.06.2010, 20:15
cdc7600 вне форума Посмотреть профиль Отправить личное сообщение для cdc7600 Найти все сообщения от cdc7600
  № 3  
Ответить с цитированием
cdc7600
 
Аватар для cdc7600

Регистрация: Dec 2008
Адрес: Севастополь
Сообщений: 112
Отправить сообщение для cdc7600 с помощью ICQ
теперь происходит ошибка при вызове этого метода
Код AS3:
XMLlist = externalXML.children();
				for (var i:Number = 0; i < XMLlist.length(); i++) {
					item = new Item( externalXML.country[i].image,  externalXML.country[i].url, externalXML.country[i].countryname );
					container.addChild(item);
					container.item.x = externalXML.country[i].x;
					container.item.y = externalXML.country[i].y;
				}
__________________
cdc7600.livejournal.com

Старый 17.06.2010, 20:33
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 4  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 cdc7600:
- Какая ошибка именно?
- При вызове какого метода именно?
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

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

Регистрация: Dec 2008
Адрес: Севастополь
Сообщений: 112
Отправить сообщение для cdc7600 с помощью ICQ
разобралась, ошибка была иза-за этого:
Код AS3:
container.item.x = externalXML.country[i].x;
container.item.y = externalXML.country[i].y;
оказывается надо писать
Код AS3:
item.x = externalXML.country[i].x;
item.y = externalXML.country[i].y;
не знаю почему))

спасибо за помощь, что-то я затупила запихать всё в контейнер)
__________________
cdc7600.livejournal.com

Старый 17.06.2010, 20:43
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 6  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 cdc7600:
Цитата:
не знаю почему))
Потому что item - это переменная с ссылкой на экземпляр класса Item, но не свойство класса, экземпляром которого является container.
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

Старый 10.03.2011, 15:49
artem.qznetsov вне форума Посмотреть профиль Отправить личное сообщение для artem.qznetsov Найти все сообщения от artem.qznetsov
  № 7  
Ответить с цитированием
artem.qznetsov

Регистрация: Mar 2009
Сообщений: 14
у меня похожая проблема
загружаю данные из XML по разным мувиклипам и добавляю на сцену. по нажатию на кнопку нужно удалить их все.пробовал по вашему методу и удаляется только последний элемент. я новичок в работе с XML, так что не судите строго.)

Код AS1/AS2:
var xmlPath:String = "news.xml";
var settingsXML:XML;
 
var loader = new URLLoader();
loader.load(new URLRequest(xmlPath));
loader.addEventListener(Event.COMPLETE, xmlLoaded);
 
function xmlLoaded(e:Event):void
{
	if ((e.target as URLLoader) != null )
	{
		settingsXML = new XML(loader.data);
		settingsXML.ignoreWhitespace = true;
		createMenu();
	}
 
}
 
function createMenu():void
{
	var newsTitle:NewsTitle;
	var newsDate:NewsDate;
	var btn:Button;
	var i:uint = 0;
 
	for each (var page:XML in settingsXML.pages.page)
	{
		var container:Sprite = new Sprite();
		addChild(container);
		newsTitle = new NewsTitle();
		newsDate = new NewsDate();
		btn = new Button();
 
		newsTitle.newsLabel.text = page.title;
		newsTitle.newsLabel.autoSize = TextFieldAutoSize.LEFT;
 
		newsDate.newsDateLabel.text = page.date;
		newsDate.newsDateLabel.autoSize = TextFieldAutoSize.LEFT;
 
		newsTitle.x = 150;
		newsTitle.y = 50 + i * 40;
 
		newsDate.x = 50;
		newsDate.y = 50 + i * 40;
 
		btn.x = 150;
		btn.y = 50 + i * 40;
		btn.width = newsTitle.width;
		btn.height = newsTitle.height;
		btn.alpha = 0;
		btn.buttonMode = true;
 
		container.addChild(newsTitle);
		container.addChild(newsDate);
		container.addChild(btn);
 
		trace(container.numChildren);
 
		btn.addEventListener(MouseEvent.CLICK, btn_click);
		function btn_click(e:MouseEvent)
		{
			while (container.numChildren > 0)
			{
				container.removeChildAt(0);
			}
			trace(container.numChildren)
		}
 
		i++;
	}
}
трэйс показывает, что у меня 3 экземпляра, но в реальности из ХМЛ их создается 9, по три разных классов и удалить мне нужно их все. я явно что-то недопонимаю


Последний раз редактировалось artem.qznetsov; 10.03.2011 в 16:22.
Старый 10.03.2011, 17:07
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 8  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Не пишите функции в функциях это дурной тон - который часто влечет за собой ошибки!.

Старый 10.03.2011, 18:40
artem.qznetsov вне форума Посмотреть профиль Отправить личное сообщение для artem.qznetsov Найти все сообщения от artem.qznetsov
  № 9  
Ответить с цитированием
artem.qznetsov

Регистрация: Mar 2009
Сообщений: 14
спасибо, это помогло, удалились.
но есть еще один вопрос, правда он не совсем по этой теме.
помимо удаления объектов, необходимо чтобы появлялся новый объект с текстом также из XML.
вопрос в том, как узнать на какой именно объект класса Button я нажал. и как отобразить нужный кусок текста (content) из хмл:
PHP код:
<?xml version="1.0" encoding="utf-8"?>

<site>
  
    <pages>
 
        <page page_number="1">
            <title>Lorem ipsum dolor sit amet</title>
            <date>3 дек</date>    
           <content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur et luctus ligula. Cras quis nisl nec ligula volutpat sodales vel sit amet lorem. Donec orci dolor, pretium nec venenatis a, ullamcorper sed nulla. Ut congue enim vitae ligula pharetra sit amet malesuada massa scelerisque. </content>        
        </page>
 
        <page page_number="2">
            <title>Lorem ipsum dolor sit amet</title>
            <date>25 окт</date>
           <content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur et luctus ligula. Cras quis nisl nec ligula volutpat sodales vel sit amet lorem. Donec orci dolor, pretium nec venenatis a, ullamcorper sed nulla. Ut congue enim vitae ligula pharetra sit amet malesuada massa scelerisque. </content>
        </page>
</site>
as-код я приводил выше.

спасибо

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

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

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


 


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


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