Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Помогите советом или логикой по SendAndLoad (http://www.flasher.ru/forum/showthread.php?t=93678)

UnOuter 26.03.2007 18:01

Помогите советом или логикой по SendAndLoad
 
В общем вопрос такой. Не могу сообразить как это сделать.

Есть скажем на форме Кнопка. При нажатии на которую я должен послать и получить данные, и в зависимости от того, что получил - сделать определенные действия.

Вот мой код (он рабочий) Все принимает и все отсылает. НО...
При нажатии на кнопку данные не успевают приняться с сервера, перед тем как срабатывает условие при котором нужно обработать эти данные.

Вопрос: Как отследить, что данные УЖЕ принялись, и после чего выполнить уже с полученными данными - это условие.


Код:


on (release) {
        var content_arr = new Array();
        myData = new LoadVars();
        myData.login = this.login_var;
        myData.sendAndLoad(_root.file_path, myData, 'POST');
        myData.onLoad = function(succes) {
                if (succes) {

//Тут мы принимаем данные
                        content_arr["err_var"] = this.err_var;       
//Их очень-очень много       
                } else {
                        trace("Error loading data");
                        //this.login_var = "Ошибка передачи данных";
                }

//Вот тут условие которые выполняется в зависимости от того что получили
                trace(content_arr["err_var"]);
                if (content_arr["err_var"] == "1") {
                        _root.nextFrame();
                } else if (content_arr["err_var"] == "0") {
                        _root.error_code._visible = true;
                        //Делаем ошибку неправильнного ввода кода невидимой
                }
        };
}


etc 26.03.2007 18:20

Для оформления кода нужно использовать теги [code][/code], а не [php][/php].

gct 26.03.2007 18:56

Читаем родной хэлп

The following example loads a text file and displays information in the Output panel when the operation completes.
Код:


var my_lv:LoadVars = new LoadVars();
my_lv.onLoad = function(success:Boolean) {
    trace("LoadVars loaded successfully: "+this.loaded);
};
my_lv.load("http://www.helpexamples.com/flash/params.txt");

Пишем правильно:
- success
- _root.error_code._visible = true;
//Делаем ошибку неправильнного ввода кода невидимой

не знаю как у кого, но у меня создалось впечатление, что в этой строке ты сделал "ошибку неправильнного ввода кода" видимой

UnOuter 26.03.2007 19:11

Собственно ничего не изменилось...
Не хочет оно выполнять условие....

Хочу отменить, что у меня Flash сначала посылает данные в PHP, потом принимает! ...

etc 26.03.2007 19:24

А почему вторую часть условий нельзя было запихнуть в первый if?

UnOuter 26.03.2007 19:28

Можно, запросто, но вот только толку от этого тоже 0. Ничего не меняется! Не выполняется оно и все...

etc 26.03.2007 19:35

В приведенном коде ошибок в принципе нет. Не считая логической:

Код:

_root.error_code._visible = true;
                        //Делаем ошибку неправильнного ввода кода невидимой

В комментарии одно, а делаем как раз наоборот.

Откуда происходит загрузка данных? Удачна ли загрузка полученных данных или нет?

gct 26.03.2007 19:38

А функции проверок на ошибки загрузки и содержания массива срабатывают на ошибки?

сори за повтор

UnOuter 26.03.2007 19:46

Да, данные получает.. трассируется все нормально...

на счет коммента там все в порядке.. там просто описка. Я проверяю это на уровне дебагера.

НЕ срабатывает условие
Код:

if (content_arr["err_var"] == "1") {
                        trace(content_arr["err_var"]);
                } else if (content_arr["err_var"] == "0") {
                        _root.error_code._visible = true;
                        //Делаем ошибку неправильнного ввода кода видимой
                        _root.error_code.gotoAndPlay(1);
                        _root.login_block.gotoAndPlay(6);
                }

Скорее всего оно просто не успевает отрабоать!
в общем даже не знаю...

gct 26.03.2007 19:50

Ну если сделать как __etc посоветовал с условиями, то оно как-то пологичней будет ну и, в принципе, должно "успеть" отработать.

UnOuter 26.03.2007 19:54

но не отробатывает же... :(

etc 26.03.2007 20:19

Так проверь content_arr["err_var"] вне условия. Если не 1, то и трейсить нечего.

UnOuter 27.03.2007 11:42

Да в том то и дело что content_arr["err_var"] = 1.

Суть в том что с
content_arr["err_var"] = 1
по мимо этого мы принимаем кучу данных. И вот тут оно и глохнит (мол не успевает все принять, или я не знаю, что).

Если content_arr["err_var"] = 0 то мы больше ничего не принимаем, то есть принимаем только content_arr["err_var"] и так как переменнатя только одна то оно естессно все быстро отрабатывает

etc 27.03.2007 11:46

Выкладывайте исходник всего-всего. Гадать на кофейной гуще надоело.

UnOuter 27.03.2007 11:59

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

Есть форма.
Вводим число допустим 100.
Нажимаем отправить.
По нажатию кнопки данные из флеша посылаются PHP.

PHP сверяет.
Если мы приняли 100 то возвращаем "1"
И посылаем еще кучу всяких переменных с данными.
если что-то другое то "0".
После этого? результат отправляем обратно во флеш, и там уже смотрим. Если вернули "1" то читаем в массив кучу данных каких-то, любых и переходим на кадр 2 , если 0 то на кадр "3".

Обращаю внимания, что в моем примере все операции приема-отпарвки данных работаю только в процедуре on (release) {}

etc 27.03.2007 12:04

Я ничем помочь не могу в данном случае. Если условие не выполняется, значит значение в массиве (кстати, надо было использовать объект) неверно и точка.

UnOuter 27.03.2007 12:10

Расскажи пожалуйста..
что значит "Значение в массиве" и что значит "Использовать объект"

etc 27.03.2007 12:34

Ну использовать Array для присвоения строковых ключей можно, но непонятно, зачем. По большому счету, в Array числовые индексы все-таки должны быть. Я имею ввиду использовать new Object, а не new Array. Хотя в данном случае это не принципиально.
Я даже не вижу смысла использовать отдельный массив/объект. Зачем, если есть LoadVars уже со всеми переменными?

UnOuter 27.03.2007 14:16

Массив я использую для того, чтобы в других частях проекта можно было его легко использовать.

В общем, ЗАРАБОТАЛО! спасибо агромное за ответ №16. Он подтолкнул меня на то, чтобы я еще раз пересмотрел значение content_arr["err_var"]. Оказалось что оно было равно 1 + куча пробелов после, что собсвенно не могло быть равно 1 по условию.
Спасибо, ребята!


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

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