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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.04.2013, 17:14
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 11  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS3:
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
 
	import map.Map;
	import map.Toolbar;
	import map.XMLEditor;
 
	public class VirtualMap2 extends Sprite
	{
		// Переменная, в которой будут храниться загруженные XML-данные
		private var dataMap:XML;
		// Объект, используемый для загрузки XML-данных
		private var urlLoader:URLLoader;
		private var editor:XMLEditor;
 
		private var cell:Map;
 
		public function VirtualMap2()
		{
			// Указываем местоположения внешнего источника XML-данных
			var urlRequest:URLRequest = new URLRequest("XML/map0.xml");
			// Создаем объект, который умеет загружать внешние текстовые данные
			urlLoader = new URLLoader();
			// Регистрируем обработчик, чтобы событие об окончании загрузки XML-данных
			urlLoader.addEventListener(Event.COMPLETE, completeLoad);
			// Загружаем XML-данные
			urlLoader.load(urlRequest);
		}
 
		public function completeLoad(e:Event):void
		{		
			// Присваиваем данные XML переменной
			dataMap = new XML(urlLoader.data);
			// Добавляем тулбар
			toolbar();	
			// Добавляем карту
			editor = new XMLEditor(dataMap);
			cellMap();
		}
 
		// Добавляем тулбар
		public function toolbar():void
		{			
			var toolbar:Toolbar = new Toolbar();
			toolbar.addButton(5, 3, 25, 25, "ADD_LINE");
			toolbar.addButton(40, 3, 25, 25, "DEL_LINE");
			toolbar.addButton(75, 3, 25, 25, "ADD_COLUMN");
			toolbar.addButton(110, 3, 25, 25, "DEL_COLUMN");
			addChild(toolbar);
			toolbar.addEventListener(MouseEvent.CLICK, buttonActions);	
		}
 
		// Добавляем карту
		public function cellMap():void
		{			
			cell = new Map();
			cell.displayCell(dataMap);
			addChild(cell);
		}
 
		public function buttonActions(e:MouseEvent):void
		{
			switch(e.target.name)
			{
				case "ADD_LINE" : editor.addLine();
				break;
				case "DEL_LINE" : editor.delLine();
				break;
				case "ADD_COLUMN" : editor.addColumn();
				break;
				case "DEL_COLUMN" : editor.delColumn();
				break;
			}
			cell.displayCell(dataMap);
		}
	}
}
Код AS3:
package map
{
	import flash.display.Sprite;
	import flash.events.MouseEvent;
 
	public class Map extends Sprite
	{
		private var sizeCell:uint;
 
		public function Map()
		{
			super();			
		}
 
		public function displayCell(dataFromXML:XML):void
		{
			this.removeChildren();
			var numberCell:uint = dataFromXML..@x.length();
			sizeCell = dataFromXML.@SIZE;
			for(var i:int = 0; i < numberCell; i++)
			{		
				var cell:Sprite = new Sprite();
				cell.graphics.lineStyle(1, 0x000000);
				cell.graphics.beginFill(0xCCCCCC, 1.0);
				cell.graphics.drawRect(0, 0, sizeCell, sizeCell);
				cell.x = dataFromXML..@x[i];
				cell.y = dataFromXML..@y[i];
				cell.buttonMode = true;
				addChild(cell);
				cell.addEventListener(MouseEvent.CLICK, cellActions);
				cell.name = "x" + cell.x + "y" + cell.y;
			}	
		}	
 
		public function cellActions(e:MouseEvent):void
		{
			var cell:Sprite = e.currentTarget as Sprite;
			cell.graphics.clear();
			cell.graphics.lineStyle(1, 0x000000);
			cell.graphics.beginFill(0xFF0000, 1.0);
			cell.graphics.drawRect(0, 0, sizeCell, sizeCell);
 
			trace(e.currentTarget.name);
		}
	}
}
__________________
Reality.getBounds(this);

Старый 06.04.2013, 17:24
olejan1991 вне форума Посмотреть профиль Отправить личное сообщение для olejan1991 Найти все сообщения от olejan1991
  № 12  
Ответить с цитированием
olejan1991

Регистрация: Jul 2012
Сообщений: 112
спасибо

Добавлено через 51 минуту
Не могу понять какая разница между removeChildren и removeChild?

Старый 06.04.2013, 18:21
Александр Мостовой вне форума Посмотреть профиль Отправить личное сообщение для Александр Мостовой Посетить домашнюю страницу Александр Мостовой Найти все сообщения от Александр Мостовой
  № 13  
Ответить с цитированием
Александр Мостовой
 
Аватар для Александр Мостовой

Регистрация: Sep 2001
Адрес: Харьков
Сообщений: 305
Отправить сообщение для Александр Мостовой с помощью ICQ Отправить сообщение для Александр Мостовой с помощью Skype™
Цитата:
Не могу понять какая разница между removeChildren и removeChild?
removeChildren - все дочерние элементы
removeChild - только один

На всякий случай: в английском Children - множественное число от Child(исключение)
__________________
...

Старый 06.04.2013, 18:29
olejan1991 вне форума Посмотреть профиль Отправить личное сообщение для olejan1991 Найти все сообщения от olejan1991
  № 14  
Ответить с цитированием
olejan1991

Регистрация: Jul 2012
Сообщений: 112
Т. е. в коде
Код AS3:
public function displayCell(dataFromXML:XML):void
		{
///////////////////////////////////////////////////////////////////
			this.removeChildren(); // вот в этом месте
//////////////////////////////////////////////////////////////////
			var numberCell:uint = dataFromXML..@x.length();
			sizeCell = dataFromXML.@SIZE;
			for(var i:int = 0; i < numberCell; i++)
			{		
				var cell:Sprite = new Sprite();
				cell.graphics.lineStyle(1, 0x000000);
				cell.graphics.beginFill(0xCCCCCC, 1.0);
				cell.graphics.drawRect(0, 0, sizeCell, sizeCell);
				cell.x = dataFromXML..@x[i];
				cell.y = dataFromXML..@y[i];
				cell.buttonMode = true;
				addChild(cell);
				cell.addEventListener(MouseEvent.CLICK, cellActions);
				cell.name = "x" + cell.x + "y" + cell.y;
			}	
		}
удаляются все элементы cell и потом рисуются заново?


Последний раз редактировалось olejan1991; 06.04.2013 в 20:26.
Старый 06.04.2013, 20:15
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 15  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Да.
У Вас просто вся карта удалялась. Я удаляю все ячейки, просто потому, что мне лично лень писать за Вас весь код. По-уму, естественно, надо удалять только те, которых больше нет в xml, и добавлять только те, которых нет на карте. Это уж сами.
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 12.04.2013 в 00:55. Причина: вылечил ногу
Старый 11.04.2013, 22:50
olejan1991 вне форума Посмотреть профиль Отправить личное сообщение для olejan1991 Найти все сообщения от olejan1991
  № 16  
Ответить с цитированием
olejan1991

Регистрация: Jul 2012
Сообщений: 112
Добавляются итак только те, которых нет на карте, а вот как убирать только те, которые убираются из XML не могу понять.


Последний раз редактировалось olejan1991; 11.04.2013 в 23:04.
Старый 12.04.2013, 00:53
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 17  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Добавляются итак только те, которых нет на карте
У Вас вся карта удалялась. Вся. Естественно, когда Вы затем создавали новую, на ней НИЧЕГО не было.
В принципе, дело житейское. Это не игра, а редактор, и суперскорости здесь не надо. Надо только запоминать такие вещи, как выделенный в настоящий момент блок, например.
А лучше вообще всю архитектуру сделать человеческой)) И генерить XML только когда надо сохранить результат, а в процессе обходиться простым и понятным массивом (или вектором).
__________________
Reality.getBounds(this);

Старый 12.04.2013, 09:47
olejan1991 вне форума Посмотреть профиль Отправить личное сообщение для olejan1991 Найти все сообщения от olejan1991
  № 18  
Ответить с цитированием
olejan1991

Регистрация: Jul 2012
Сообщений: 112
Цитата:
Сообщение от Wolsh Посмотреть сообщение
А лучше вообще всю архитектуру сделать человеческой)) И генерить XML только когда надо сохранить результат, а в процессе обходиться простым и понятным массивом (или вектором).
спасибо. узнать бы что еще должно быть в моем так называемом приложении по человечески). Буду переделывать под массивы.

1. Но ведь функция отображения из Xml все равно получается должна быть, на случай если я захочу подгрузить карту из существующего XML или скорее функция считывания данных из XML в массив?

2. Сохранять XML нужно будет с помощью php?

3. Как удалить с экрана элементы, которые удаляются из массива?


Последний раз редактировалось olejan1991; 12.04.2013 в 11:37.
Старый 12.04.2013, 10:24
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 19  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
XML - самая человеческая структура ибо предназначена для агрегатирования данных и запросов.
Пример : uzels//*/Uzel. Просто же чем писать кучу однотипных циклов.

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

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

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


 


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


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