|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
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); } } } 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); |
|
|||||
Регистрация: Jul 2012
Сообщений: 112
|
спасибо
Добавлено через 51 минуту Не могу понять какая разница между removeChildren и removeChild? |
|
|||||
Цитата:
removeChild - только один На всякий случай: в английском Children - множественное число от Child(исключение)
__________________
... |
|
|||||
Регистрация: Jul 2012
Сообщений: 112
|
Т. е. в коде
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; } } Последний раз редактировалось olejan1991; 06.04.2013 в 20:26. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Да.
У Вас просто вся карта удалялась. Я удаляю все ячейки, просто потому, что мне лично лень писать за Вас весь код. По-уму, естественно, надо удалять только те, которых больше нет в xml, и добавлять только те, которых нет на карте. Это уж сами.
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 12.04.2013 в 00:55. Причина: вылечил ногу |
|
|||||
Регистрация: Jul 2012
Сообщений: 112
|
Добавляются итак только те, которых нет на карте, а вот как убирать только те, которые убираются из XML не могу понять.
Последний раз редактировалось olejan1991; 11.04.2013 в 23:04. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
В принципе, дело житейское. Это не игра, а редактор, и суперскорости здесь не надо. Надо только запоминать такие вещи, как выделенный в настоящий момент блок, например. А лучше вообще всю архитектуру сделать человеческой)) И генерить XML только когда надо сохранить результат, а в процессе обходиться простым и понятным массивом (или вектором).
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Jul 2012
Сообщений: 112
|
Цитата:
1. Но ведь функция отображения из Xml все равно получается должна быть, на случай если я захочу подгрузить карту из существующего XML или скорее функция считывания данных из XML в массив? 2. Сохранять XML нужно будет с помощью php? 3. Как удалить с экрана элементы, которые удаляются из массива? Последний раз редактировалось olejan1991; 12.04.2013 в 11:37. |
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
XML - самая человеческая структура ибо предназначена для агрегатирования данных и запросов.
Пример : uzels//*/Uzel. Просто же чем писать кучу однотипных циклов. |
Часовой пояс GMT +4, время: 20:17. |
|
« Предыдущая тема | Следующая тема » |
|
|