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

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

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

Регистрация: 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.
Старый 01.08.2008, 20:53
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 2  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
Цитата:
// функция которая срабатывает автоматом при запуске приложения.
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);
и пользуйся мемберсами где угодно)

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


Последний раз редактировалось ramshteks; 01.08.2008 в 20:57.
Старый 01.08.2008, 21:17
Felicast вне форума Посмотреть профиль Отправить личное сообщение для Felicast Найти все сообщения от Felicast
  № 3  
Ответить с цитированием
Felicast
 
Аватар для Felicast

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
DhuMory, быстро-быстро нажми кнопочку изменить над твоим постом и оформи код тегами code, ато тебя заругают
по вопросу: для начала вам необходимо познакомится с объектно-ориентированным программированием, и с событиями.
__________________
я могу стать всем, если только захочу


Последний раз редактировалось Felicast; 01.08.2008 в 21:21.
Старый 01.08.2008, 22:23
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
DhuMory, отредактируйте свой пост и оформите код тегами [code][/code].

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

Старый 01.08.2008, 23:09
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 5  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
попробуйте так
Код:
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.
Старый 02.08.2008, 11:22
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 6  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Alex Lexcuk, зачем человека учить плохим вещам?

Старый 02.08.2008, 19:03
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Alex Lexcuk, с чего вы взяли, что xml будет в конструктуре? Вы полагаете, что выполнение кода так и остановится на конструкторе?

Старый 04.08.2008, 12:36
DhuMory вне форума Посмотреть профиль Отправить личное сообщение для DhuMory Найти все сообщения от DhuMory
  № 8  
Ответить с цитированием
DhuMory

Регистрация: Aug 2008
Сообщений: 8
Спасибо всем за науку.

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

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

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

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

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

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


Последний раз редактировалось DhuMory; 04.08.2008 в 14:01. Причина: правил стилистику
Создать новую тему Ответ Часовой пояс GMT +4, время: 19:46.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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