Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как удалить элементы с экраны и добавить новые по новым данным (http://www.flasher.ru/forum/showthread.php?t=196475)

olejan1991 25.03.2013 13:33

Как удалить элементы с экраны и добавить новые по новым данным
 
Основной класс 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, время: 18:34.

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