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

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

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

Регистрация: Mar 2009
Сообщений: 19
По умолчанию Проблема с чтением xml из функции

Добрый день,
проблема в следующем. написал функцию, с помощью которой хочу прочитать xml-файл. Если размещать код прямо на кадре все работает отлично. Если же поместить данный код в функцию, то xml не читается. Подскажите в чем ошибка.
Код AS1/AS2:
class Diagram {
	public var len;
	public var my_xml;
 
	public function Diagram() {
		this.my_xml = new XML();
		this.my_xml.ignoreWhite = true;
		this.my_xml.onLoad = function(ok) {
			if (ok) {
				this.len = this.my_xml.childNodes[0].childNodes.length;
 
			}
		}
		this.my_xml.load("data1.xml");
	}

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

Регистрация: Jan 2009
Адрес: Одесса
Сообщений: 309
Отправить сообщение для Fatality с помощью ICQ
Ну-ну. Вы не задумывались над тем, что в функции вызываемой как метод, this ссылается на объект из которого она вызвана. В вашем случае это — my_xml, у которого уж точно нет никакого свойтсва my_xml.

Старый 07.04.2009, 12:31
sereg вне форума Посмотреть профиль Отправить личное сообщение для sereg Найти все сообщения от sereg
  № 3  
Ответить с цитированием
sereg

Регистрация: Mar 2009
Сообщений: 19
Спасибо)с этим разобрался. Вопрос такого плана, чисто по функции onLoad

насколько я понял, используя trace, эта функция отрабатывает в самом конце программы, т.е. trace написанный в обработчике этой функции всегда выводится последним. Почему так и можно ли это как-то изменить? например использовав #initclip

Старый 07.04.2009, 12:48
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Нельзя приготовить омлет не разбив яйца. onLoad срабатывает когда данные загружены, и трейс в нем соответственно тоже.
Поэтому логику приложения надо изменить, разбив ее на три части.
1. Работа приложения не основанная на данных из xml
2. Ожидание загрузки xml
3. Работа приложения основанная на данных из xml
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 07.04.2009, 22:38
sereg вне форума Посмотреть профиль Отправить личное сообщение для sereg Найти все сообщения от sereg
  № 5  
Ответить с цитированием
sereg

Регистрация: Mar 2009
Сообщений: 19
про омлет не вопрос.и все вроде бы хорошо, но у меня вопрос вот какой
создал класс.в нем прописал помимо конструктора две функции.
1) читает xml
2) просто заполняет какой-то левый массив левыми данными

объявляю переменную моего класса, сначала вызываю функцию чтения xml, и потом уже вызываю вторую левую функцию.
смотрю через trace - сначала он выполнил вторую функцию, после нее только прочитал xml, не смотря на то, что xml идет раньше....

почему так?!

сам класс
Код AS1/AS2:
class Diagram extends MovieClip {
 
	public var arr:Array = new Array();
	public var len;
 
	public function Diagram(parent:Object) {
		parent.createEmptyMovieClip("mc", 20);
		//оси
		parent.mc.lineStyle(2, 0x000000, 100);
		parent.mc.moveTo(40, 50);
		parent.mc.lineTo(40, 350);
		parent.mc.moveTo(40, 350);
		parent.mc.lineTo(570, 350);
	}
	public function setData(parent:Object) {
		var my_xml = new XML();
		my_xml.ignoreWhite = true;
		my_xml.onLoad = function(ok) {
			if (ok) {
				len = my_xml.childNodes[0].childNodes.length;
				trace(len);
			}
		};
		my_xml.load("data1.xml");
	}
 
	public function testArray() {
		for (var i = 0; i<10; i++) {
			this.arr[i] = "Hello"+i;
		}
		trace(len);
	}
}
как вызываю
Код AS1/AS2:
var d:Diagram = new Diagram(_root);
d.setData(_root);
d.testArray();

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

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
пример:
1, вы звоните другу и говорите ему, чтоб он приехал к вам с пивом - будите телек смотреть.
2, вы включаете телевизор.

что случится раньше: приедет друг или нагреется кинескоп телевизора? а если поменять операции местами?

телевизору плевать, когда приедет ваш друг и приедит ли он вообще - вы его включили он работает.


Последний раз редактировалось Mnilionic; 08.04.2009 в 01:02.
Старый 08.04.2009, 02:35
sereg вне форума Посмотреть профиль Отправить личное сообщение для sereg Найти все сообщения от sereg
  № 7  
Ответить с цитированием
sereg

Регистрация: Mar 2009
Сообщений: 19
какие-нибудь пути решения?

Старый 08.04.2009, 02:37
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
http://www.flasher.ru/forum/showthread.php?t=123233
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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