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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Jun 2004
Адрес: RF
Сообщений: 7
Question Help! onLoad доступ к данным

Помогите разобраться .
Загружаю данные из файла , после чего получается объект который нужно перегрузить в массив (отфильтровав всякие ненужности) . Все бы вроде ничего ,только вот потом ,необходимо получить доступ к отдельному элементу массива

Огромное спасибо тому кто поможет !!!!!
Сам ,просто задалбался ,перебрал множество вариантов .

Код:
function  load_main(name_array, url_load) {
       cont_obj = new LoadVars();                       //объявляем
       cont_obj.load(url_load);                             //грузим
             cont_obj.onLoad=function(success) {   // onLoad OK!
                                                                 //перегружаем в массив
              for (name_obj in cont_obj) {
		if (name_obj != "onLoad") {
		    name_array.push(cont_obj[name_obj]);
		}
	      }
	 name_array.reverse();     //реверс массива
	 return name_array;         //возвращаем массив
               }
}
aa = new Array();
load_main(aa, "text.txt");
element_array=aa[1]//получам элемент массива
текстовый файл:
main0=водка&main1=пиво&main2=коктель&main3=!!!!!!

Старый 12.06.2004, 18:34
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 2  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
можно поинтересоваться,
почему массив ты заполняешь только когда данные загрузятся,
а получиьт его элемент пытаешься еще до этого ? :))

для чего вообще онЛоад?
для того чтобы выполнить действия только тогда, когда загрузка завершена. (кстати return там совсершенно ни к чему)

до тех пор пока данные не загрузятся массив не создастся, а до тех пор пока он не создастся оч трудно получить его элемент :))

Старый 12.06.2004, 21:55
Vovsik вне форума Посмотреть профиль Отправить личное сообщение для Vovsik Найти все сообщения от Vovsik
  № 3  
Vovsik

Регистрация: Jun 2004
Адрес: RF
Сообщений: 7
Текстовый файл получаем локально (для тестирования алгоритма), задумка получать данные с сервера (но это потом) .
Пробовал подругому ,когда данные уже загружены ,в результате такое ощущение ,что к полученному объекту нет доступа . Насчет (return) согласен , я переделал немножко ...

Код:
function  load_main(name_array, url_load) {
       cont_obj = new LoadVars();                       //объявляем
       cont_obj.load(url_load);                             //грузим
             cont_obj.onLoad=function(success) {
              trace(cont_obj.loaded);
             }
              trace(cont_obj.loaded)
               for (name_obj in cont_obj) {
		    name_array.push(cont_obj[name_obj]);
              }
	 name_array.reverse();     //реверс массива
}
aa = new Array();
load_main(aa, "text.txt");
element_array=aa[1]//получам элемент массива
В первом варианте массив заполнялся
Во втором варианте [0] элемент.

Подскажите в чем ошибка

Старый 15.06.2004, 19:11
Vovsik вне форума Посмотреть профиль Отправить личное сообщение для Vovsik Найти все сообщения от Vovsik
  № 4  
Vovsik

Регистрация: Jun 2004
Адрес: RF
Сообщений: 7
Есть вот такой пимер ...
Код:
Array.prototype.fromFile = function(file) {
        this.__proto__.__proto__=LoadVars.prototype
        this.load(file);
};

myArray=[]
myArray.fromFile("text.txt")
Не могу разобраться как получить доступ к массиву.
Уже замучился ,постоянно "undefined"

Помогите разобраться HELP!!!!

Старый 15.06.2004, 19:29
Елё вне форума Посмотреть профиль Отправить личное сообщение для Елё Посетить домашнюю страницу Елё Найти все сообщения от Елё
  № 5  
Елё
 
Аватар для Елё

Регистрация: Jun 2002
Адрес: Москва
Сообщений: 287
Отправить сообщение для Елё с помощью Skype™
Вопрос всеж не совсем понятен

Во первых, как правильно сказал Nox Noctis, даже не смотря на то что файл локальный загрузка мгновенно не происходит. Надо ждать onLoad.
Во вторых ты пихаешь дынные в какой то абстрактный массив, не имеющий никакого отношения к тому что передается в параметрах... Ведь когда вызывается onLoad аргументов наскока я понимаю уже не существует

надо наверное как то так
Код:
//frame1        
function  load_main(name_array, url_load) {
       cont_obj = new LoadVars();                       //объявляем
       cont_obj.load(url_load);                            //грузим
       cont_obj.name_array = name_array; 
       cont_obj.onLoad=function(success) {   // onLoad OK!
                                                                 //перегружаем в массив
              for (name_obj in cont_obj) {
		if (name_obj != "onLoad") {
		    name_array.push(cont_obj[name_obj]);
		}
	      }
	 name_array.reverse();     //реверс массива
	 _root.play();         //возвращаем массив
               }
}
aa = new Array();
load_main(aa, "text.txt");
stop();
//frame2 
element_array=aa[1]//получам элемент массива
stop();

Старый 17.06.2004, 00:36
Vovsik вне форума Посмотреть профиль Отправить личное сообщение для Vovsik Найти все сообщения от Vovsik
  № 6  
Vovsik

Регистрация: Jun 2004
Адрес: RF
Сообщений: 7
Наверное лучше будет если красную строчку перенести внутрь функции , тогда небудет иерархии и отфультровать ненужный объект при заполнении массива (после заполнения вообще удальть объект LoadVars)

Код:
//frame1
function  load_main(name_array, url_load) {
       cont_obj = new LoadVars();
       cont_obj.load(url_load);
       cont_obj.onLoad=function(success){ 
       cont_obj.name_array= name_array; 
     for (name_obj in cont_obj) {
	  if (name_obj != "onLoad"&&name_obj!="name_array") {
	        name_array.push(cont_obj[name_obj]);
           }
      }
               name_array.reverse();
               _root.play();
       }
}
aa = new Array();
load_main(aa, "text.txt");
stop();
//frame2   
element_array=aa[1]
stop();
Большое спасибо за помощь Nox Noctis & Елё ,суть проблемы понял ,буду работать дальше

Интересно , мы сначала представляем себе абстрактную модель , описываем её как функцию ,задаем ей поведение , в зависимости от ситуации (события) .Разумно предположить ,что и доступ к отдельному елементу можно описать так же ,как абстрактную модель.

Вопрос ,можно ли из этого же кадра получить объект?

Старый 17.06.2004, 16:23
Елё вне форума Посмотреть профиль Отправить личное сообщение для Елё Посетить домашнюю страницу Елё Найти все сообщения от Елё
  № 7  
Елё
 
Аватар для Елё

Регистрация: Jun 2002
Адрес: Москва
Сообщений: 287
Отправить сообщение для Елё с помощью Skype™
Цитата:
Вопрос ,можно ли из этого же кадра получить объект?
Не очень понял из какого кадра и какой объект...

И мне кажется ты не до конца осознал суть проблемы
Поскольку при переносе стрчки ничего работать не будет

Идея в том, если я правильно себе представляю, то во время выполнения функции onLoad ни cont_obj ни name_array не существует. Поскольку это функция определена в объекте а не в _root. К cont_obj ты можешь поиметь доступ через this (this == cont_obj) а к name_array разве что через _root (_root.name_array)

Старый 17.06.2004, 16:51
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 8  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
я например не особо понимаю смысл этого кода.
что там за чудеса у тебя с циклами, массивами имён... ЗАЧЕМ? :)

Старый 17.06.2004, 17:05
Елё вне форума Посмотреть профиль Отправить личное сообщение для Елё Посетить домашнюю страницу Елё Найти все сообщения от Елё
  № 9  
Елё
 
Аватар для Елё

Регистрация: Jun 2002
Адрес: Москва
Сообщений: 287
Отправить сообщение для Елё с помощью Skype™
Вроде в цикле получается массив в котором лежит пиво, водка, ну и другие спиртные напитки ;-)

Цитата:
main0=водка&main1=пиво&main2=коктель&main3=!!!!!!

Старый 19.06.2004, 02:37
Vovsik вне форума Посмотреть профиль Отправить личное сообщение для Vovsik Найти все сообщения от Vovsik
  № 10  
Vovsik

Регистрация: Jun 2004
Адрес: RF
Сообщений: 7
Хорошо ,объсню подробней.
Задумка вообщем такая , все данные распологаются на сервере т.е. (картинки ,тексты, имена кнопок, инстанс имена и т.д.) . Мне нужно получить данные с сервера, и загрузить их в массив для дальнейшей обработки . Лучшая, на мой взгляд ,реализация в AS ,для получения данных, через объект "LoadVars" .Казалось бы ничего сложного , да не тут то было .Для простоты создаем функцию. В качестве параметров передаем имя массива (в который грузим данные),и URL или CGI (откуда получаем данные) .
Для того чтобы загрузить эти данные создаём объект LoadVars
"cont_obj=new LoadVars()"
После чего получаем данные в созданный объект "cont_obj.load(URL)"
На следующем этапе нужно убедиться что загрузка данных завершена и по завершению загрузки выполнить функцию cont_obj.onLoad=function(success){}
Далее используя FOR...IN, данные из объекта LoadVars перегружаем в массив ,Можно за пределами , можно в ней сделать это, безразницы .Главное чтобы из этого массива можно было ,перемещать , записывать , загружать ... и фиг его знает что ещё можно с этим делать ЗА пределами функций.

Код который был подправлен мной после Елё работает! , но получить элемент массива можно только из второго кадра (Как показал Елё), из первого кадра в любом случае "undefined" т.е. фига с маслом. чё делать не знаю (пока сам не доехал )
мне нужно из первого кадра

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

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

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


 


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


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