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

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

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

Регистрация: Jul 2012
Сообщений: 112
По умолчанию Как удалить элементы с экраны и добавить новые по новым данным

Основной класс VirtualMap3
Код AS3:
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
 
	import map.EditorXML;
	import map.Map;
	import map.Toolbar;
 
	public class VirtualMap3 extends Sprite
	{
 
		// Переменная, в которой будут храниться загруженные XML-данные
		private var dataMap:XML;
		// Объект, используемый для загрузки XML-данных
		private var urlLoader:URLLoader;
 
		public function VirtualMap3()
		{
			// Указываем местоположения внешнего источника 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);
 
			// Добавляем тулбар
			var toolbar:Toolbar = new Toolbar(dataMap);			
			toolbar.displayToolbar();
			addChild(toolbar);
 
			// Отображаем карту по первоначальным данным XML
			var cell:Map = new Map(dataMap);
			cell.displayCell();
			addChild(cell);
 
			// Передаем данные из XML файла в XML редактор
			var editorXML:EditorXML = new EditorXML(dataMap);
		}
	}
}
Класс Toolbar, который отображает панель с кнопками

Код AS3:
package map
{
	import flash.display.Sprite;
	import flash.events.MouseEvent;
 
	public class Toolbar extends Sprite
	{
		private var dataFromXML:XML;
		private var editXML:EditorXML;
 
		public function Toolbar(data:XML)
		{
			this.dataFromXML = data;
			this.editXML= new EditorXML(dataFromXML);
		}
 
		// Рисуем кнопки
		private function addButton(x:uint, y:uint, width:uint, height:uint, name:String):void
		{
			var button:Sprite = new Sprite();
			button.graphics.beginFill(0xFFFFFF, 1.0);
			button.graphics.lineStyle(1, 0x000000);
			button.graphics.drawRect(x, y, width, height);
			button.buttonMode = true;
			button.name = name;
			addChild(button);
//вешаем событие на кнопки
			button.addEventListener(MouseEvent.CLICK, buttonActions);
		}
 
// функция, выполняемая при клике по кнопке
		public function buttonActions(e:MouseEvent):void
		{
			trace(e.target.name);
 
 
			if(e.target.name == "ADD_LINE")
			{	
//запускаем метод из класса EditorXML для добавления ячеек(квадратов) 				
				editXML.addLine();
			}
		}
 
		// Добавляем кнопки в тулбар и рисуем его
		public function displayToolbar():void
		{
			var toolbar:Toolbar = new Toolbar(dataFromXML);
			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);
 
		}
	}
}
Класс map, который отображает ячейки(квадраты)

Код AS3:
package map
{
	import flash.display.Sprite;
 
	public class Map extends Sprite
	{
		private var dataFromXML:XML;
 
		public function Map(data:XML)
		{
			this.dataFromXML = data;
		}
 
		public function displayCell():void
		{
			var numberCell:uint = dataFromXML..@x.length();
 
			for(var i:int = 0; i < numberCell; i++)
			{		
				var x:uint = dataFromXML..@x[i];
				var y:uint = dataFromXML..@y[i];
				var sizeCell:uint = dataFromXML.@SIZE;
				var cell:Sprite = new Sprite();
				cell.graphics.lineStyle(1, 0x000000);
				cell.graphics.drawRect(x, y, sizeCell, sizeCell);
				addChild(cell);
			}	
		}
	}
}
Класс EditorXML для работы с XML

Код AS3:
package map
{
	import flash.display.Sprite;
 
	public class EditorXML extends Sprite
	{
		private var dataFromXML:XML;
		private var column:uint;
		private var line:uint;
		private var sizeCell:uint;
 
		public function EditorXML(data:XML)
		{
			this.dataFromXML = data;
			this.column = dataFromXML.@WIDTH;
			this.line = dataFromXML.@HEIGHT;
			this.sizeCell = dataFromXML.@SIZE;
		}
 
//Здесь мы меняем файл XML(добавляем в него количество квадратов(ячеек))
		public function addLine():void
		{
			for(var i:int = 0; i < column; i++)
			{
				dataFromXML.appendChild(<CELL ID={i} x={sizeCell * i}  y={line * sizeCell+30} TYPE-CELL="grass6"><OBJECT TYPE-OBJECT="tree"></OBJECT></CELL>);
			}
			this.line++;
 
 
 
		}
	}
}
Как я понял, чтобы отобразить новое количество квадратов(ячеек) необходимо удалить то, что уже отображается и заного нарисовать квадраты по новым данным, но вот как их удалять и потом передавать новые данные XML в основной класс я не могу понять.

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

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

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


 


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


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