![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2008
Сообщений: 8
|
Вопрос.
Итак. Благодоря представленным тут урокам и учебнику научился скачивать XML файл в виде структурированного объекта. Создал файл Person.as следующего ниже наполнения подключенный в соответствующей строчке проекта flash. И к нему создал файл на XML example.xml, где сложена структурированная информация по персоналиям.
package { // package
import flash.display.*;
import flash.text.*;
import flash.net.*;
import flash.utils.*;
import flash.events.*;
public class Person extends MovieClip { // class
var members :Object = new Object() ;// это ГЛОБАЛЬНАЯ переменная для всего класса???
public function Person() { //function Person // функция которая срабатывает автоматом при запуске приложения.
LoadXMLdata(); // загрузка данных из XML файла
trace(members); //*** (проверка передаются ли данные сюда (НЕ_передаются))
} //function Person
public function LoadXMLdata() { //LoadXMLdata // загрузка данных из XML файла "example.xml"
var dataLoader:URLLoader =new URLLoader();
dataLoader.dataFormat = URLLoaderDataFormat.TEXT;
dataLoader.addEventListener(Event.COMPLETE, completeDataLoader);
dataLoader.load(new URLRequest("example.xml"));
trace(members);//** (проверка передаются ли данные сюда (НЕ_передаются))
}//LoadXMLdata
public function completeDataLoader(event:Event) {//completeDataLoader //заполнение данными из XMLфайла "example.xml" объекта members
members = XMLList(event.target.data);
trace(members);//* (проверка скачалось ли (ТУТ ПОКАЗЫВАЕТ ТО что и загружалось) РАБОТАЕТ как надо)
}//completeDataLoader
} // class
} // package
В итоге получается, что скаченным можно пользоваться только внутри сомого тела function completeDataLoader, (//*) а на уровень выше (//**) и тем более (//***) в другое метсто скаченные из XML файла данные НЕ_передаются. ![]() Извините за глупый вопрос, но как пристроить выкаченные в структурированный объект данные из внешнего файла, так чтобы ими можно было беспрепятственно пользоваться по всему телу программы. ![]() Спасибо. PS И ещё а где в Питере учат именно ActionScript3.0, чтобы по уму курсы какие-нибудь, лучше с сертификатом? Последний раз редактировалось DhuMory; 04.08.2008 в 12:31. |
|
|||||
|
Цитата:
замени в completeDataLoader и пользуйся мемберсами где угодно) и о боже... не стоит здесь пояснять комментами такие простые вещи) читать крайне трудно ваш код... ну или хотя бы ознакомьтесь с рекомендациями по использованию комментариев) Последний раз редактировалось ramshteks; 01.08.2008 в 20:57. |
|
|||||
|
DhuMory, быстро-быстро нажми кнопочку изменить над твоим постом и оформи код тегами code, ато тебя заругают
по вопросу: для начала вам необходимо познакомится с объектно-ориентированным программированием, и с событиями.
__________________
я могу стать всем, если только захочу Последний раз редактировалось Felicast; 01.08.2008 в 21:21. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
DhuMory, отредактируйте свой пост и оформите код тегами [code][/code].
И поймите, что загрузка данных не может происходить мгновенно. Вы не можете получить содержимое файла сразу после вызова метода загрузки. |
|
|||||
|
попробуйте так
package { // package
import flash.display.*;
import flash.text.*;
import flash.net.*;
import flash.utils.*;
import flash.events.*;
public class Person extends MovieClip { // class
var members:XML;// >>это ГЛОБАЛЬНАЯ переменная для всего класса??? ДА ДЛЯ ВСЕГО
public function Person() { //function Person // функция которая срабатывает автоматом при запуске приложения.
LoadXMLdata(); // загрузка данных из XML файла
var часики:uint = setInterval(тикают,30);//включить часики
function тикают()
{
if (members == null) trace("Нифига не загружено");
if (members != null)
{
trace("ХМЛ в конструкторе "+members);
clearInterval(часики);//отключить часики
}
}
} //function Person
public function LoadXMLdata() { //LoadXMLdata // загрузка данных из XML файла "example.xml"
var dataLoader = new URLLoader();
dataLoader.dataFormat = URLLoaderDataFormat.TEXT;
dataLoader.addEventListener(Event.COMPLETE, completeDataLoader);
dataLoader.load(new URLRequest("example.xml"));
trace(members);//** (проверка передаются ли незагруженные данные сюда (естественно передаются, но они null))
}//LoadXMLdata
public function completeDataLoader(event:Event) {//completeDataLoader //заполнение данными из XMLфайла "example.xml" объекта members
members = XML(event.target.data);
//dataLoader.removeEventListener(Event.COMPLETE, completeDataLoader);
trace(members);//* (проверка скачалось ли (ТУТ ПОКАЗЫВАЕТ ТО что и загружалось) РАБОТАЕТ как надо)
}//completeDataLoader
} // class
} // package
Последний раз редактировалось Alex Lexcuk; 02.08.2008 в 00:49. |
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
Alex Lexcuk, зачем человека учить плохим вещам?
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Alex Lexcuk, с чего вы взяли, что xml будет в конструктуре? Вы полагаете, что выполнение кода так и остановится на конструкторе?
|
|
|||||
|
Регистрация: Aug 2008
Сообщений: 8
|
Спасибо всем за науку.
Код Alex Lexcuk заработал как часы.(совсем по хорошему бы тело одной функции от тела другой функции, отделить, но теперь путь мне ясен, за что спасибо огромное Alex Lexcuk) А вот код ramshteks НЕ работал так же как и мой, увы. Совет __etc про время весьма полезен, т.е. сама соль, но без кода от Alex Lexcuk вьезжал бы ещё сутки. (текст программы в такие штуки (тэги) занёс) Совет Felicast типа "иди учись!" неконструктивен. Ну я и так учусь и я и так нуб и многие профессиональные слова ещё просто не понимаю, но догадываюсь.=) Но всё внимательно изучаю. Собственно ключевым оказалось то, что надо отслеживать время событий. Буду вникать в идеалогию процесса. Всем спасибо, буду думать. Последний раз редактировалось DhuMory; 04.08.2008 в 14:01. Причина: правил стилистику |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:58. |
|
|
« Предыдущая тема | Следующая тема » |
|
|