![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2009
Сообщений: 19
|
Добрый день,
проблема в следующем. написал функцию, с помощью которой хочу прочитать xml-файл. Если размещать код прямо на кадре все работает отлично. Если же поместить данный код в функцию, то xml не читается. Подскажите в чем ошибка. |
|
|||||
|
Ну-ну. Вы не задумывались над тем, что в функции вызываемой как метод, this ссылается на объект из которого она вызвана. В вашем случае это — my_xml, у которого уж точно нет никакого свойтсва my_xml.
|
|
|||||
|
Регистрация: Mar 2009
Сообщений: 19
|
Спасибо)с этим разобрался. Вопрос такого плана, чисто по функции onLoad
насколько я понял, используя trace, эта функция отрабатывает в самом конце программы, т.е. trace написанный в обработчике этой функции всегда выводится последним. Почему так и можно ли это как-то изменить? например использовав #initclip |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Нельзя приготовить омлет не разбив яйца. onLoad срабатывает когда данные загружены, и трейс в нем соответственно тоже.
Поэтому логику приложения надо изменить, разбив ее на три части. 1. Работа приложения не основанная на данных из xml 2. Ожидание загрузки xml 3. Работа приложения основанная на данных из xml |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 19
|
про омлет не вопрос.и все вроде бы хорошо, но у меня вопрос вот какой
создал класс.в нем прописал помимо конструктора две функции. 1) читает xml 2) просто заполняет какой-то левый массив левыми данными объявляю переменную моего класса, сначала вызываю функцию чтения xml, и потом уже вызываю вторую левую функцию. смотрю через trace - сначала он выполнил вторую функцию, после нее только прочитал xml, не смотря на то, что xml идет раньше.... почему так?! сам класс 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); } } |
|
|||||
|
пример:
1, вы звоните другу и говорите ему, чтоб он приехал к вам с пивом - будите телек смотреть. 2, вы включаете телевизор. что случится раньше: приедет друг или нагреется кинескоп телевизора? а если поменять операции местами? телевизору плевать, когда приедет ваш друг и приедит ли он вообще - вы его включили он работает. Последний раз редактировалось Mnilionic; 08.04.2009 в 01:02. |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 19
|
какие-нибудь пути решения?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 02:16. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|