![]() |
|
||||||||||
|
|||||
|
Доброе утро, у меня есть вопрос, как лучше представлять игровую карту
которая находиться в xml файле. У меня на данный момент сделано так <?xml version="1.0" encoding="utf-8" ?> <!-- потом сюда закину типы щас просто для теста с 1 обьектом --> <data> <map> 11111111111111 10000000000001 10000111000001 10011011000001 10000011000001 10000011000001 10000011000001 10000011000001 10000000000001 11111111111111 </map> </data> но я так и не понял, как можно перебрать каждый символ в стринге. Или как мне сделать, что бы на выходе я получал Array<uint> разборка ... private function _loaded_xml(e:Event):void { var _xml:XML = new XML(_loader.data); var _uNum_Total_maps:uint = _xml.number_of_map; var _result:String; var _uCount_maps:uint = 1; _xml.ignoreWhitespace = true; for each (var maps:XML in _xml.map) { if (_uCount_maps == _num_maps) {// найдена тот лабиринт который нужен _result = maps.toString(); trace("map №" + _uCount_maps + "\n" + maps.toString()); } _uCount_maps++; } } |
|
|||||
|
Modus ponens
|
А зачем XML для таких вещей? У вас каждая строчка - 14 байт, а если бы вы записывали это как числа, то можно было бы по 2 байта на строчку, еще бы 2 бита оставалось
![]() Ну а конкретно для такой задачи - что-то в таком духе ![]() package { import flash.display.Sprite; /** * ... * @author wvxvw */ public class TestParseMap extends Sprite { public function TestParseMap() { super(); var map:String = <![CDATA[11111111111111 10000000000001 10000111000001 10011011000001 10000011000001 10000011000001 10000011000001 10000011000001 10000000000001 11111111111111]]>.toString(); this.parseMap(map, this.createOnes, this.createZeros); } private function parseMap(input:String, createOnes:Function /* int->int->void */, createZeros:Function /* int->int->void */):void { var current:int; var currentChar:String; var inputLength:int = input.length; var rows:int; var colums:int; while (current < inputLength) { currentChar = input.charAt(current); trace(currentChar.charCodeAt()); switch (currentChar) { case "1": createOnes(current - colums, rows); break; case "0": createZeros(current - colums, rows); break; case "\r": rows++; colums = current + 1; break; default: colums++; } current++; } } private function createOnes(collums:int, rows:int):void { super.graphics.beginFill(0xFF); super.graphics.drawRect(collums * 20, rows * 20, 20, 20); super.graphics.endFill(); } private function createZeros(collums:int, rows:int):void { super.graphics.beginFill(0xFF00); super.graphics.drawCircle(collums * 20 + 10, rows * 20 + 10, 10); super.graphics.endFill(); } } }
__________________
Hell is the possibility of sanity |
|
|||||
|
это было бы лучше , если бы у меня было только 2 обьекта
а их будет минимум 10 и как парсер сделать ? мона поподробней |
|
|||||
|
Ну вы даете, вам же разжевали подробней некуда. Их и будет максимум 10 с такой организацией :о).
Добавлено через 2 минуты Хотя, погорячился, еще буквы есть и спецсимволы
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
ну хорошо , а как пропарсить мне этот массив , если допустим этот путь истины.
|
|
|||||
|
Цитата:
2wvxvw, а зачем вы передаете функции как параметры?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Цитата:
... я так делаю , потому что не знаю , как лучшесделать когда все загружено. про другие методы просто не слышал. Добавлено через 11 минут wvxvw все спасибо, вопросов больше по этой теме нет ![]() |
|
|||||
|
Modus ponens
|
GBee: Мне так удобно
Хотя, вцелом, ето не совсем тру путь в AS3, т.как по дороге теряется типизация. В том же HaXe она бы не потерялась.DanQuimby: Если значений будет больше чем 1 и 0, то свитч логично заменить каким-нибудь мапом / массивом колбеков. Т.е. получится что-то в роде:
__________________
Hell is the possibility of sanity |
|
|||||
|
Цитата:
Ну а про свитч я тоже думаю что мона его не делать , иногда в нем путаешься , а фабрика будет получше |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:31. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|