|
2D-программирование Вопросы, касающиеся двумерного программирования |
03.12.2006, 14:58
|
#1
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
BlitzXML.bb
Всем привет!
Объясните пожалуйсто принцип работы с XML файлами (создание , сохранение, чтение и т.д) для Блитца и в блитце!
или описание на русском я сам тода разберусь)
|
(Offline)
|
|
03.12.2006, 15:00
|
#2
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: BlitzXML.bb
А стоит ли это изучать?? или достаточно простого сохранение в файл
|
(Offline)
|
|
03.12.2006, 15:46
|
#3
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Re: BlitzXML.bb
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
03.12.2006, 23:17
|
#4
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: BlitzXML.bb
impersonalis Спасибо! Но у меня сама либа была!
меня интерересовал вопрос чтения и сохранения!
типо по карте у меня разбросанно много обЪектов( к примеру деревьев)
как их всех сохранить в хмл-ку
ЗАРАНИЕ СПАСИБО) vbmenu_register("postmenu_23700", true);
|
(Offline)
|
|
04.12.2006, 01:29
|
#5
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: BlitzXML.bb
Ну сперва глянь примеры с работой, они то о всём и раскажут, ну и кратко от меня:
Есть раздела, в разделах могут быть ещё разделы, и чайлды. что-либо (раздел или чайлд), может иметь значения как в них так и отдельно но относящиеся к ним (новой строкой). Ты можешь их читать, находить и узнавать значения, и можешь делать свои хмлки. всё просто, смотри пример, в само устройство хмл не смотри там ты ничего почти не найдёшь кроме комментов.
ЗЫ
Хорошо сделан парсер, очень...
|
(Offline)
|
|
04.12.2006, 20:33
|
#6
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: BlitzXML.bb
MoKa как построить саму хмлку я понял ! как читать я понял из примера ! а вот как сохранять кучу объектов в хмлку так и непонимаю)
ну типо я поставил объект в случайном месте как координыты сохранить , угол повора и т.д. в хмл...
|
(Offline)
|
|
05.12.2006, 04:51
|
#7
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: BlitzXML.bb
Для объектов создаёшь массив, со значениями координат и поворотов, ну и того что нужно сохранять.
Затем в цикле обновляешь данные для каждого состовляющего массива.
Потом что-бы сохранить, перебираешь весь массив и сохраняешь в разделе, подряд. В примере есть.
Там будет типо, найти колличество чайлдов, затем делаешь:
For С=1 to ChildCnt
Тут, комманда, которая будет брать чайлд под номером С.
Next
В примере должно быть.
|
(Offline)
|
|
14.05.2007, 15:30
|
#8
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: BlitzXML.bb
У меня Снова вопрос по ХМЛу
Вообщем сохранение и загрузку сделал
НО при загрузки если элемент пустой
то выдает ошибку как это исправить?
rootnode = xmlLoad("Maps\Level.xml")
worldnode = xmlNodeFind("Level", rootnode)
; Стены
LoadLevWall=xmlNodeFind("Wall",worldnode)
WCnt%=xmlNodeChildCount(LoadLevWall)
For w=1 To WCnt
Node=xmlNodeChild(LoadLevWall,w)
If xmlNodeNameGet(node) = "Object" Then
wtyp= xmlNodeAttributeValueGet(node, "type")
wX= xmlNodeAttributeValueGet(node, "X")
wY= xmlNodeAttributeValueGet(node, "Y")
wZ= xmlNodeAttributeValueGet(node, "Z")
wYaw=xmlNodeAttributeValueGet(node, "Yaw")
CreateModel(wX,wY,wZ,wYaw,wtyp)
End If
Next
ХМЛка выглядит так:
<Level>
<Wall>
<Object type="4" X="-214.972" Y="0.0" Z="189.818" Yaw="0.0"/>
<Object type="4" X="-216.823" Y="0.0" Z="109.447" Yaw="0.0"/>
<Object type="4" X="-222.078" Y="0.0" Z="-19.1" Yaw="0.0"/>
<Object type="4" X="-221.069" Y="0.0" Z="-107.484" Yaw="0.0"/>
</Wall>
...
Что не так? ЧТо дописать?
|
(Offline)
|
|
14.05.2007, 15:32
|
#9
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: BlitzXML.bb
А и забыл (в моем понимание пустоu это)
<Level>
<Wall>
</Wall>
</Level>
|
(Offline)
|
|
14.05.2007, 23:22
|
#10
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: BlitzXML.bb
На какой именно строке выдаёт ошибку? Это важно.
|
(Offline)
|
|
15.05.2007, 00:20
|
#11
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: BlitzXML.bb
Вроде понял как исправить ! домой приду попробую
а ошибки... он в либу переключается
вообщем
при сохранение
он сохраняет,
не так , как я написал ,
а так
т.е. сразу закрывающий тег (если пусто)
и видимо он найти не может Wall
как сказал приеду отпишусь...
|
(Offline)
|
|
21.05.2007, 18:34
|
#12
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: BlitzXML.bb
НЕ не выходит! ошибка тута:
http://savepic.ru/5278.jpg
ну естественно не там а гдето в моем коде вот снова он:
СОХРАНЕНИЕ
Function SaveLevel(Lev%)
XLevSave=xmlNodeAdd(XLevSave,"Level")
XglSave=xmlNodeAdd(XLevSave,"Globals")
// Xcol=xmlNodeAdd(XglSave,"int")
// xmlNodeAttributeValueSet(Xcol,"AmbientLight",Al)
XenSave=xmlNodeAdd(XLevSave,"Entitys")
;Стены
XLevWall=xmlNodeAdd(XenSave,"Wall")
For o.TWallObject=Each TWallObject
Node=xmlNodeAdd(XLevWall,"Object")
xmlNodeAttributeValueSet(Node,"type",o\typ)
xmlNodeAttributeValueSet(Node,"X",EntityX(o\ent))
xmlNodeAttributeValueSet(Node,"Y",EntityY(o\ent))
xmlNodeAttributeValueSet(Node,"Z",EntityZ(o\ent))
;NodeP=xmlNodeAdd(Node,"Rotation")
xmlNodeAttributeValueSet(Node,"Yaw",EntityYaw(o\ent))
Next
xmlSave("Maps\Level"+Lev+".xml",XLevSave)
End Function
ЗАГРУЗКА
Function LoadLevel(Lev%)
rootnode = xmlLoad("Maps\Level"+Lev+".xml")
levelnode= xmlNodeFind("Level", rootnode)
worldnode = xmlNodeFind("Entitys", levelnode)
; Стены
LoadLevWall=xmlNodeFind("Wall",worldnode)
WCnt%=xmlNodeChildCount(LoadLevWall)
For w=1 To WCnt
Node=xmlNodeChild(LoadLevWall,w)
If xmlNodeNameGet(node) = "Object" Then
wtyp= xmlNodeAttributeValueGet(node, "type")
wX= xmlNodeAttributeValueGet(node, "X")
wY= xmlNodeAttributeValueGet(node, "Y")
wZ= xmlNodeAttributeValueGet(node, "Z")
wYaw=xmlNodeAttributeValueGet(node, "Yaw")
CreateModel(wX,wY,wZ,wYaw,wtyp) //Моя функция объект создает где надо
End If
Next
End Function
и все таже проблема
если ни одного объекта не сохранил
то при загруки ошибка...
|
(Offline)
|
|
23.05.2007, 23:32
|
#13
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: BlitzXML.bb
Угу.
Тогда выход: при сохранении проверять на колличество сохраняемых нод, если их 0, то сохранять ноду просто "Empty", и затем при считывании проверять на ChildName если он "Empty", то пропускать.
|
(Offline)
|
|
24.05.2007, 23:14
|
#14
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: BlitzXML.bb
MoKa
я так уже думал
но как определить колво элементов в типе?
Сначало сделал переменную и при создание каждого эл.типа
прибовлял к ней 1 и следовательно если ни один тип не создан
перемення остается 0 и тогда при сохранение этот тип он не сохраняет
НО так как типов уже придостаточно то это ни очень удобно))
[всмысле не элементов типа , а разных типов]
или ты предлогаешь всегда записывать
пустой элемент
мм надо попробывать
А как ты делал в своем редакторе? там вроде есть пустые поля (
|
(Offline)
|
|
24.05.2007, 23:44
|
#15
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: BlitzXML.bb
Как в редакторе, уже и не помню, больше пол года прошло.
Нет зачем делать глобальную и прибовлять, всё проще =).
В цикле когда сохраняешь эллементы:
Count%=0
For n.N=Each N
Count=Count+1
Next
If Count=0
Пишем пустую ноду.
Endif
Всё просто
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:48.
|