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

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

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

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
По умолчанию Загрузить информацию из 3 XML в один контент

Есть 3 xml необходимо по очереди загрузить с трёх xml инфу.
Когда делаю циклом, информация загружается только с последнего xml.
Код AS1/AS2:
for (var n:Number = 0; n < 3; n++)
{
urlList = "myXML" + n + ".xml";
xml.load(urlList);
}
Видимо нужно делать проверку, если загружена первая xml, брать из нее инфу, потом грузить следующую и т.д.
Только вот пока что это не выходит.

Старый 23.01.2009, 21:19
Цветкофф вне форума Посмотреть профиль Отправить личное сообщение для Цветкофф Найти все сообщения от Цветкофф
  № 2  
Ответить с цитированием
Цветкофф

Регистрация: May 2008
Адрес: москва
Сообщений: 63
KiL33,а_сутьба_объединить_в_одиН?

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

Регистрация: Jan 2009
Адрес: Одесса
Сообщений: 309
Отправить сообщение для Fatality с помощью ICQ
я бы сделал так:
Код AS1/AS2:
XML.prototype.ignoreWhite = true;
var XML_toLoad:XML = new XML();
var XML_Array:Array = ["images.xml", "text.xml", "info.xml"];
var loaded_XML:Array = [];
var counter:Number = 0;
XML_toLoad.onLoad = function()
{
	loaded_XML.push(new XML(this));
	if (counter < XML_Array.length - 1)
	{
		counter++;
		this.load(XML_Array[counter]);
	}
	else trace(loaded_XML);
};
XML_toLoad.load(XML_Array[counter]);
по срабатыванию условия else массив loaded_XML содержит загруженные XML из списка XML_Array


Последний раз редактировалось Fatality; 23.01.2009 в 21:40.
Старый 23.01.2009, 21:37
Kuruki вне форума Посмотреть профиль Отправить личное сообщение для Kuruki Найти все сообщения от Kuruki
  № 4  
Ответить с цитированием
Kuruki

Регистрация: Jan 2008
Сообщений: 669
Ну либо загружать по очереди (вызывать загрузку следующего после загрузки текущего), либо 3 объекта хмл создавать

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

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
Fatality, Спасибо за пример он хорош, но есть пара недостатков. Возможно они возникли потому что вопрос мой был не полностью раскрыт.
XMl-ок может быть свободное количество, ну к примеру за максимум возьмём три. И само собой создавать массив с перечислением имен файлов не есть в моем случае хорошо. Разумеется проще цикл. Сами представьте если xml-ок будет больше двух десятков.
Информация в xml представляет собой атрибуты, с помощью которых строится структура
Очередной раз соглашусь с kuruki в данном случае с поочередной загрузкой.

Код AS1/AS2:
import mx.utils.Delegate;
 
var urlList:Array;
var textLoader:XML;
 
// Составляем список имён файлов.
urlList = new Array();
 
for (var n:Number = 0; n < 3; n++)
{
urlList[n] = "myXML" + n + ".xml";
 
}
 
textLoader = new XML();
textLoader.onData = Delegate.create(this, onText);
 
// Обработчик события XML.onData
function onText(value:String):Void
{
//txt1.text += value;
 
// Загружаем xml-ки
xml.load(urlList[0]);
xml.ignoreWhite = true;
trace("ЗАГРУЖЕНО __"+urlList[0])
 
// Если файлы не кончились, грузим следующий.
if (urlList.length > 0)
{
var fileName:String;
 
fileName = urlList[0];
urlList.shift();
 
textLoader.load(fileName);
}
}
onText();
XML-ки считываются, но структура не создается.
Атрибуты считываются только с первого, хотя трейс показывает, что все xml по очереди были загружены
В примере полноценный код. Есть пара откровенных косяков, может кто-нибудь поможет исправить.
Вложения
Тип файла: rar three-xml-in-one-content.rar (8.1 Кб, 53 просмотров)


Последний раз редактировалось KiL33; 24.01.2009 в 10:31.
Старый 24.01.2009, 14:23
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 6  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS1/AS2:
var xml:XML = new XML();
xml.onLoad = xmlLoaded;
var xmlDocs:Array = new Array();
var xmlCounter:Number = 0;
function xmlLoaded(ok:Boolean) {
    if (ok) {
        trace("загружена XML : "+xmlCounter);
        xmlDocs.push(this.firstChild);
        xmlCounter += 1;
        loadXML(xmlCounter);
    } else {
        trace('...а больше нету...');
        done();
    }
}
function loadXML(count:Number) {
    xml.load("myXML"+count+".xml");
}
//// cтартуем загрузку
loadXML(0);
 
//// все xml'ки загружены
function done() {
 
    var startY:Number = 0;
    for (var doc:Number = 0; doc<xmlDocs.length; doc++) {
        var node:XMLNode = xmlDocs[doc].firstChild;
        var i:Number = 0;
        while (node) {
 
        if (node.nodeName == 'node') {trace(node)
                var message = this.attachMovie('mc', 'mc'+doc+'_'+i, this.getNextHighestDepth());
                message.txt.autoSize = true;
                message.txt_var = node.attributes['label'];
                message._y = startY;
                startY+=30;
                i++;
            }
            node = node.nextSibling;
        }
    }
}
__________________
Reality.getBounds(this);

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

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
Спасибо, это реализовано значительно лучше, чем даже как я хотел сделать
Только вот, сколько ни долблюсь одного не понимаю, почему делая мувик кнопкой я не могу получить инфу с атрибутов.
Код:
  if (node.nodeName == 'node') {trace(node)
                var message = this.attachMovie('mc', 'mc'+doc+'_'+i,    
                this.getNextHighestDepth());
                message.txt.autoSize = true;
                message.txt_var = node.attributes['label'];
                message._y = startY;
                message.onPress=function(){
	  _root.txt= node.attributes['label'];
	}	
              startY+=30;
               i++;
            }
            node = node.nextSibling;
        }
    }
}


Последний раз редактировалось KiL33; 24.01.2009 в 18:19.
Старый 24.01.2009, 20:33
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 8  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Потому что node нет ни в кнопке, ни в руте. Эта переменная существует только в обработчике загрузки и только пока выполняется функция. Проще говоря, недоступна.
Так что нужен механизм для связывания кнопок и нодов - либо запоминать всю инфу прямо в свойствах кнопки message (собственно, лейбл у вас и сохраняется в переменной message.txt_var - кстати, что за допотопный способ? почему не message.txt.text?) - либо все ноды хранить в массиве, в кнопках сохранять индексы по которым искать ноды - это на случай, если инфы в одном ноде много и сохранять всю в переменных кнопки не оптимально.
И вот...
Код:
_root.txt.text = this.txt_var;
__________________
Reality.getBounds(this);

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

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
Цитата:
Сообщение от Wolsh Посмотреть сообщение
message.txt_var - кстати, что за допотопный способ? почему не message.txt.text?
Честно говоря, я не замечал разницы. А она вообще есть?

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

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
Ещё одна проблема.
По мере необходимости мне нужно удалять xml’ки и удаляю я их не по порядку, а в разброс, т.е. допустим xml’ок 10 я удаляю пятую и вот здесь возникает проблема, если обрывается порядковая цепочка цифр то xml’ки считаются только до 4 хотя после 4 идут еще 6 7 8 9 10 xml’ок.

Можно с этим что-то сделать?

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

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

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


 


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


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