|
|
|||||
Регистрация: Jun 2004
Адрес: RF
Сообщений: 7
|
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=!!!!!! |
|
|||||
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
можно поинтересоваться,
почему массив ты заполняешь только когда данные загрузятся, а получиьт его элемент пытаешься еще до этого ? :)) для чего вообще онЛоад? для того чтобы выполнить действия только тогда, когда загрузка завершена. (кстати return там совсершенно ни к чему) до тех пор пока данные не загрузятся массив не создастся, а до тех пор пока он не создастся оч трудно получить его элемент :)) |
|
|||||
Регистрация: 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] элемент. Подскажите в чем ошибка |
|
|||||
Регистрация: Jun 2004
Адрес: RF
Сообщений: 7
|
Есть вот такой пимер ...
Array.prototype.fromFile = function(file) { this.__proto__.__proto__=LoadVars.prototype this.load(file); }; myArray=[] myArray.fromFile("text.txt") Уже замучился ,постоянно "undefined" Помогите разобраться HELP!!!! |
|
|||||
Вопрос всеж не совсем понятен
Во первых, как правильно сказал 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(); |
|
|||||
Регистрация: 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(); Интересно , мы сначала представляем себе абстрактную модель , описываем её как функцию ,задаем ей поведение , в зависимости от ситуации (события) .Разумно предположить ,что и доступ к отдельному елементу можно описать так же ,как абстрактную модель. Вопрос ,можно ли из этого же кадра получить объект? |
|
|||||
Цитата:
И мне кажется ты не до конца осознал суть проблемы Поскольку при переносе стрчки ничего работать не будет Идея в том, если я правильно себе представляю, то во время выполнения функции onLoad ни cont_obj ни name_array не существует. Поскольку это функция определена в объекте а не в _root. К cont_obj ты можешь поиметь доступ через this (this == cont_obj) а к name_array разве что через _root (_root.name_array) |
|
|||||
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
я например не особо понимаю смысл этого кода.
что там за чудеса у тебя с циклами, массивами имён... ЗАЧЕМ? :) |
|
|||||
Вроде в цикле получается массив в котором лежит пиво, водка, ну и другие спиртные напитки ;-)
Цитата:
|
|
|||||
Регистрация: 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. |
|
« Предыдущая тема | Следующая тема » |
|
|