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

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

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

Регистрация: Dec 2010
Сообщений: 177
По умолчанию Редактор уровней: сохранение сцены в xml файл

1. Требуется сохранить в xml файл клипы сцены с их параметрами (расположение, позиция, поворот и пр).

Вопросы в комментах кода:

Код AS3:
private function saveLevel():void
{
        var xmlFile:XML = new XML();
	for (var i:int = 0; i < level.numChildren; i++) 
	{
		var item:DisplayObject = level.getChildAt(i);
		item.name; //как добавить в xmlFile имя (т.е. узел) очередного клипа из сцены?
 
                item.width; //как добавить в xmlFile элемент со значением ширины клипа? 
 
	}
 
	trace("XML_ =" + xmlFile);
 
}
В итоге xml файл должен содержать что-то типа этого:

Код:
var Level:XML =
 <Object_Name_1>
   <width>20</width>
   <height>15</height>
   <x>60</x>
   <y>40</y>
   <rotation>5</rotation>
 </Object_Name_1>

 <Object_Name_2>
   <width>20</width>
   <height>15</height>
   <x>60</x>
   <y>40</y>
   <rotation>5</rotation>
 </Object_Name_2>;
2. Каким образом сохранить экземпляр объекта XML с данными в xml файл?

Старый 30.08.2011, 17:28
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Сразу видно человек устравивается на работу - и рпоходит тестовое задание. Если у тебя возникают такие вопросы может не надо туда идти? ( по факту могу ошибаться конечно )

Сохранение XML - через FileReference ( byteArray юзать так же )
Создание XML - по методикам ECMA , вечером буду дам готовый код как это делается вручную.
__________________
Марк Tween

Старый 30.08.2011, 20:45
Alexmody вне форума Посмотреть профиль Отправить личное сообщение для Alexmody Найти все сообщения от Alexmody
  № 3  
Ответить с цитированием
Alexmody

Регистрация: Dec 2010
Сообщений: 177
>>Сразу видно человек устраивается на работу
Нет, на работу не устраиваюсь), мне это нужно для реализации сохранения уровней в xml (делаю редактор уровней).
Просто ранее с xml в as3 не работал.

>>Сохранение XML - через FileReference
Спасибо.

>>Создание XML - по методикам ECMA , вечером буду дам готовый код как это делается вручную.
Было бы замечательно!


Последний раз редактировалось Alexmody; 30.08.2011 в 20:50.
Старый 30.08.2011, 22:10
ProxyGreen вне форума Посмотреть профиль Отправить личное сообщение для ProxyGreen Найти все сообщения от ProxyGreen
  № 4  
Ответить с цитированием
ProxyGreen
 
Аватар для ProxyGreen

Регистрация: Jul 2011
Сообщений: 67
Хммм, а зачем называть ноду именем объекта, имхо лучше сделать ноду <object> c нодой <name> внутри.

Старый 31.08.2011, 00:27
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 5  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
http://help.adobe.com/en_US/FlashPla...xamplesSummary

ProxyGreen дал дельный совет

А по делу:

Код AS3:
private function saveLevel():void
{
        var xmlFile:XML = new XML();
        var len:int = level.numChildren;
	for (var i:int = 0; i < len; i++) 
	{
		var item:DisplayObject = level.getChildAt(i);
                var xmlItem:XML = <item />;
                xmlItem.@id = i; //для пример св-ва.
		xmlItem.name = item.name; //как добавить в xmlFile имя (т.е. узел) очередного клипа из сцены?
 
                xmlItem.width = item.width; //как добавить в xmlFile элемент со значением ширины клипа? 
                xmlFile.appendChild(xmlItem);
	}
 
	trace("XML_ =" + xmlFile.toXMLString());
 
}
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 31.08.2011, 00:50
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 6  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Это называется сериализацией. Есть много разных форматов. Одни лучше-другие хуже.
Есть SOAP, RPC-XML, AMF-XML у всех есть некие правила - иногда разумные, иногда не очень.
Я говорю только про xml, кроме них есть JSON, JSON-RPC, и бинарные AMF, ProtoBuf, BSON и другие, тысячи их.
__________________
Отряд Котовскага

Старый 31.08.2011, 08:25
Alexmody вне форума Посмотреть профиль Отправить личное сообщение для Alexmody Найти все сообщения от Alexmody
  № 7  
Ответить с цитированием
Alexmody

Регистрация: Dec 2010
Сообщений: 177
1.
Код AS3:
file.save(	xmlFile, "saveLevel.xml");
Но как указал in4core выше, по видимому нужно использовать ByteArray, напр. в одном из топиков я видел такое: var ba:ByteArray= PNGEncoder.encode(bmd); и далее вызывалась ф-я save у FileReference.

Зачем в данном случае для сохранения xml файла нужно использовать ByteArray и самое главное как?

2. Как с помощью FileReference указать путь к папке по умолчанию для сохранения файла. Такое ощущение, что ни как, если я прав, то есть ли альтернатива FileReference по сохранению xml файла?

3. Чем лучше загружать xml файл FileReference или все же URLLoader (ранее загрузку им делал)?

GBee

Спасибо большое за код, сильно облегчили мне задачу, единственное при вызове xmlFile.appendChild(xmlItem); и выводе trace("XML_ =" + xmlFile.toXMLString());, то xmlFile получается пустой, хотя я проверял каждый добавляемый xmlItem отлично заполняется данными ?

Старый 31.08.2011, 12:20
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 8  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
1) Что-то не работает? При сохранении надо в диалоге указать куда - руками. Это только под 10ку
2) Вроде никак.
3) Для редактора уровней FileReference, для игры URLLoader.
4) Код покажите итоговый, я писал без проверки.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 31.08.2011, 12:36
Alexmody вне форума Посмотреть профиль Отправить личное сообщение для Alexmody Найти все сообщения от Alexmody
  № 9  
Ответить с цитированием
Alexmody

Регистрация: Dec 2010
Сообщений: 177
[quote=GBee;1027068]
>>1) Что-то не работает? При сохранении надо в диалоге указать куда - руками. Это только под 10ку

Спасибо за ответы все заработало, теперь и сохраняю уровень и загружаю, получилось проще, чем я думал.
Единственное протестил на 9-ом плеере, получившейся код связанный с FileReference, как при загрузке, так и сохранении выдает ошибку. Т.е. получается для 9-ого плеера FileReference надо как-то затачивать?


Последний раз редактировалось Alexmody; 31.08.2011 в 14:00.
Старый 31.08.2011, 15:08
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 10  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
В 9ке нет сейва.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

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

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


 


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


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