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

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

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

Регистрация: Nov 2009
Сообщений: 300
По умолчанию Как правильно подключить (Embed) и прочитать, xml

Пытаюсь подключить xml-файл, но ничего не получается в самом начале.
Подключаю так:
Код AS3:
[Embed(source = 'assets/test.xml', mimeType="text/xml")] private var lvl:Class;
Потом делаю так:
Код AS3:
var xmlLevel:XML = new XML();
xmlLevel = XML(new lvl());
trace(xmlLevel.layer.(@type == "decoration"));
Но до этого кода даже не доходит, выскакивают ошибки просто при подключении.
Ошибки такие:
LevelParser_lvl.as(1): col: 72 Error: Syntax error.
package { public class LevelParser_lvl { public static var data:XML = <?xml version="1.0">
LevelParser_lvl.as(18): col: 1 Error: Syntax error: expecting identifier before end of program.
LevelParser_lvl.as(18): col: 1 Error: Syntax error: expecting rightbrace before end of program.


XML-файл выглядит так:
Код:
<?xml version="1.0">
<level>
	<layer type="collision">
0,0,0,0
0,0,0,0
	</layer>
	<layer type="decoration">
0,0,0,0
0,0,0,0
	</layer>
	<objects>
		<yDiamond x="376" y="160"/>
		<Hero x="16" y="208"/>
		<rDiamond x="348" y="152"/>
		<bDiamond x="572" y="168"/>
	</objects>
</level>
Собственно, что я делаю не так?

Старый 29.07.2011, 23:33
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
А разве в xml можно делать многострочные значения?
Код AS3:
0,0,0,0\n0,0,0,0
Код AS3:
trace(xmlLevel.layer.@type == "decoration");
__________________
тут я

Старый 29.07.2011, 23:38
saikspaik вне форума Посмотреть профиль Отправить личное сообщение для saikspaik Найти все сообщения от saikspaik
  № 3  
Ответить с цитированием
saikspaik

Регистрация: Nov 2009
Сообщений: 300
Вот так то же самое.
Код:
<?xml version="1.0">
	<objects>
		<yDiamond x="376" y="160"/>
		<Hero x="16" y="208"/>
		<rDiamond x="348" y="152"/>
		<bDiamond x="572" y="168"/>
	</objects>
</level>

Старый 29.07.2011, 23:50
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 4  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
Сообщение от saikspaik Посмотреть сообщение
Вот так то же самое.
Код:
<?xml version="1.0">
	<objects>
		<yDiamond x="376" y="160"/>
		<Hero x="16" y="208"/>
		<rDiamond x="348" y="152"/>
		<bDiamond x="572" y="168"/>
	</objects>
</level>
Где открывающий <level>?
__________________
тут я

Старый 30.07.2011, 00:04
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 5  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код AS3:
[Embed(source='test.xml', mimeType="application/octet-stream")] private var lvl:Class;
Код AS3:
var file:ByteArray = new lvl();
var str:String = file.readUTFBytes( file.length );
var xml:XML = new XML( str );
trace( "xml : " + xml );

Старый 30.07.2011, 00:11
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 6  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Код AS3:
var file:ByteArray = new lvl() as ByteArray; // на самом деле это ByteArrayAsset
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 30.07.2011, 02:15
saikspaik вне форума Посмотреть профиль Отправить личное сообщение для saikspaik Найти все сообщения от saikspaik
  № 7  
Ответить с цитированием
saikspaik

Регистрация: Nov 2009
Сообщений: 300
Цитата:
Сообщение от КорДум Посмотреть сообщение
Где открывающий <level>?
Очепятка, с ним то же самое.

silin
Это видел, это же отсюда?
По примеру, в принципе, работает.

Но почему не хочет без ByteArray?
Вот например, другой вариант, без ByteArray, работает:
Код AS3:
var urlload:URLLoader = new URLLoader();
var xml:XML = new XML();
urlload.addEventListener(Event.COMPLETE, loadtxt);
urlload.load(new URLRequest("test.xml"));
function loadtxt(event:Event):void {
	xml = XML(event.target.data);
	trace(xml);
}
Не пойму, почему нельзя так с Embed проделать.

dimarik
Не совсем понял.

Добавлено через 22 минуты
Так, все заработало как нужно.
Скорее всего не хватало правильного mimeType в Embed и последнего знака вопроса в <?xml version="1.0"?>
Рабочий вариант выглядит так:
Код AS3:
[Embed(source = 'test.xml', mimeType="application/octet-stream")] private var lvl:Class;//Подключение
 
var xml:XML = new XML(new lvl());
trace(xml.layer.(@type=="decoration"));//Использование
XML-файл выглядит так:
Код:
<?xml version="1.0"?>
<level>
	<layer type="collision">
0,0,0,0
0,0,0,0
	</layer>
	<layer type="decoration">
0,0,0,0
0,0,0,0
	</layer>
	<objects>
		<yDiamond x="376" y="160"/>
		<Hero x="16" y="208"/>
		<rDiamond x="348" y="152"/>
		<bDiamond x="572" y="168"/>
	</objects>
</level>
Всем спасибо, можно расходиться

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Первый раз слышу чтобы без ByteArray работало
__________________
Марк Tween

Старый 30.07.2011, 14:55
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 9  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
неявный вызов toString()


Последний раз редактировалось i.o.; 30.07.2011 в 15:00.
Старый 30.07.2011, 14:58
saikspaik вне форума Посмотреть профиль Отправить личное сообщение для saikspaik Найти все сообщения от saikspaik
  № 10  
Ответить с цитированием
saikspaik

Регистрация: Nov 2009
Сообщений: 300
Цитата:
Сообщение от in4core Посмотреть сообщение
Первый раз слышу чтобы без ByteArray работало
Вот так - век живи, век учись
Хорошо что я не знал, что без ByteArray нельзя

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

Теги
embed , mimeType , xml
Опции темы
Опции просмотра

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

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


 


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


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