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

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

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

Регистрация: May 2006
Сообщений: 21
Question Считывание XML (Ошибка: невозможно преобразовать [...] в XML)

Салют! Возникла такая вот задача (смотрим код):

Код AS3:
//Загрузка XML:
var xmlLloader:URLLoader = new URLLoader();
	xmlLloader.dataFormat = URLLoaderDataFormat.TEXT;
	xmlLloader.addEventListener(Event.COMPLETE, onLoadXML);
	xmlLloader.load(new URLRequest("newspaper4.xml"));
var newsPaper:XML = new XML;
function onLoadXML(event:Event):void
	{
		newsPaper = event.target.data;
	}
Выдает ошибку: "Error #1034: Ошибка типа Coercion: невозможно преобразовать [тут текст XML-файла] в XML"

Знаю, что можно сделать так и все будет работать:

Код AS3:
function onLoadXML(event:Event):void
	{
		var newsPaper:XML = new XML(event.target.data);
	}
Но мне нужно именно так, как я написал в первом варианте. Что изменить или как обхитрить, чтобы заработал мой первый вариант? Спасибо.

Старый 20.10.2009, 14:16
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 2  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Зачем?
__________________
Griver

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

Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
не знаю, могу только предположить
Код AS3:
var newsPaper:XML = event.target.data as XML
но действительно не вижу проблемы

Старый 20.10.2009, 14:33
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 4  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
random13, так не прокатит.
__________________
Griver

Старый 20.10.2009, 16:31
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Значит вы ему не XML отдаёте.

Старый 20.10.2009, 18:17
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 6  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Если в этой строке:
Код AS3:
var newsPaper:XML = new XML(event.target.data);
не устраивает только то, что newsPaper становится локальным, то почему не:
Код AS3:
newsPaper = XML(event.target.data);
Сори, но я тупо не понимаю причины по которой имина шо необходимо писать без приведения типа 0_о ...может я чего-то не знаю...
__________________
Поймай яблоко 2!

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

Регистрация: May 2006
Сообщений: 21
Мне нужно, чтобы newsPaper была глобальной переменной, локальной ее делать никак не годится. Zebestov, спасибо, вариант работает. Но тогда другая проблема.
Сейчас уточню код:
Код AS3:
//Загрузка XML:
var xmlLloader:URLLoader = new URLLoader();
	xmlLloader.dataFormat = URLLoaderDataFormat.TEXT;
	xmlLloader.addEventListener(Event.COMPLETE, onLoadXML);
	xmlLloader.load(new URLRequest("newspaper4.xml"));
var newsPaper:XML = new XML;
function onLoadXML(event:Event):void
	{
		newsPaper = XML(event.target.data);
		trace(newsPaper); //Выводит содержимое XML-файла
	}
trace(newsPaper); //Выводит пустоту
А нужно, чтобы newsPaper в глобальной области тоже содержал текст XML-файла. Как, что и где объявить или сделать, чтобы добится результата? Спасибо.

Старый 20.10.2009, 21:08
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 8  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Всё у вас верно.
Загрузка асинхронна, то есть мы ждем пока загружается xml, но код выполняем дальше и
Код AS3:
trace(newsPaper); //Выводит пустоту
выводит пустоту просто потому, что ещё ничего загрузить то не успел.

Старый 20.10.2009, 21:15
Ynks вне форума Посмотреть профиль Отправить личное сообщение для Ynks Найти все сообщения от Ynks
  № 9  
Ответить с цитированием
Ynks
 
Аватар для Ynks

Регистрация: May 2006
Сообщений: 21
Хм... Пусть так. Тогда раскрываю след. код:
Код AS3:
//Загрузка XML:
var xmlLloader:URLLoader = new URLLoader();
	xmlLloader.dataFormat = URLLoaderDataFormat.TEXT;
	xmlLloader.addEventListener(Event.COMPLETE, onLoadXML);
	xmlLloader.load(new URLRequest("newspaper4.xml"));
 
var newsPaper:XML = new XML;
var newsCount:int;
function onLoadXML(event:Event):void
	{
		newsPaper = XML(event.target.data)
		newsCount = newsPaper.@count; //Присваивает 8 — так и должно быть
	}
newsCount = newsPaper.@count; //Присваевает пустоту, а должно присвоить 8
Как быть?

Старый 20.10.2009, 21:28
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 10  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Код AS3:
var xmlLloader:URLLoader = new URLLoader();
	xmlLloader.dataFormat = URLLoaderDataFormat.TEXT;
	xmlLloader.addEventListener(Event.COMPLETE, onLoadXML);
	xmlLloader.load(new URLRequest("newspaper4.xml"));
 
var newsPaper:XML = new XML;
var newsCount:int;
function onLoadXML(event:Event):void
	{
		newsPaper = XML(event.target.data)
	myFunc();
	}
 
 
function myFunc():void{
newsCount = newsPaper.@count;
}

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

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

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


 


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


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