Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   ?передача данных (объекта) в Action Script3.0 скачанных их XML? (http://www.flasher.ru/forum/showthread.php?t=114556)

DhuMory 01.08.2008 20:45

Вопрос.
Итак. Благодоря представленным тут урокам и учебнику научился скачивать 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 файла данные НЕ_передаются. :rolleyes:

Извините за глупый вопрос, но как пристроить выкаченные в структурированный объект данные из внешнего файла, так чтобы ими можно было беспрепятственно пользоваться по всему телу программы. :rolleyes:

Спасибо.

PS И ещё а где в Питере учат именно ActionScript3.0, чтобы по уму курсы какие-нибудь, лучше с сертификатом?

ramshteks 01.08.2008 20:53

Цитата:

// функция которая срабатывает автоматом при запуске приложения.
public function Person() { //function Person
ыыыыы)) это называется конструктор...)
Код:

var members :Object = new Object() ;
замени на
private var members:XMLList;


замени в completeDataLoader
Код:

members = XMLList(event.target.data);
на

members = new XMLList(event.target.data);

и пользуйся мемберсами где угодно)

и о боже... не стоит здесь пояснять комментами такие простые вещи)
читать крайне трудно ваш код... ну или хотя бы ознакомьтесь с рекомендациями по использованию комментариев)

Felicast 01.08.2008 21:17

DhuMory, быстро-быстро нажми кнопочку изменить над твоим постом и оформи код тегами code, ато тебя заругают
по вопросу: для начала вам необходимо познакомится с объектно-ориентированным программированием, и с событиями.

etc 01.08.2008 22:23

DhuMory, отредактируйте свой пост и оформите код тегами [code][/code].

И поймите, что загрузка данных не может происходить мгновенно. Вы не можете получить содержимое файла сразу после вызова метода загрузки.

Alex Lexcuk 01.08.2008 23:09

попробуйте так
Код:

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


mre 02.08.2008 11:22

Alex Lexcuk, зачем человека учить плохим вещам?

etc 02.08.2008 19:03

Alex Lexcuk, с чего вы взяли, что xml будет в конструктуре? Вы полагаете, что выполнение кода так и остановится на конструкторе?

DhuMory 04.08.2008 12:36

Спасибо всем за науку.

Код Alex Lexcuk заработал как часы.(совсем по хорошему бы тело одной функции от тела другой функции, отделить, но теперь путь мне ясен, за что спасибо огромное Alex Lexcuk)

А вот код ramshteks НЕ работал так же как и мой, увы.

Совет __etc про время весьма полезен, т.е. сама соль, но без кода от Alex Lexcuk вьезжал бы ещё сутки.
(текст программы в такие штуки (тэги) занёс)

Совет Felicast типа "иди учись!" неконструктивен. Ну я и так учусь и я и так нуб и многие профессиональные слова ещё просто не понимаю, но догадываюсь.=)

Но всё внимательно изучаю.
Собственно ключевым оказалось то, что надо отслеживать время событий.
Буду вникать в идеалогию процесса.

Всем спасибо, буду думать.


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

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