Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Проблема с переменными из пхп во флеш (http://www.flasher.ru/forum/showthread.php?t=98340)

Kurt-sm 11.07.2007 19:46

Проблема с переменными из пхп во флеш
 
Что я делаю?

php код :
Код:

$kol = 8;
echo "kol=$kol";
?>


Во флеше

Код:

loadVariablesNum (”load.php”, 0, “POST”);


Собственно, переменная загружается, но вот если я пишу так:

Код:

loadVariablesNum (”load.php”, 0, “POST”);
kol2 = kol;

kol2 не становится равной kol


Вообще же я заметил, что хотя и загружаю переменную из пхп, но не получается у меня её использовать ни в каких циклах.
Что же я не так делаю?

Skubent 11.07.2007 20:00

_root.kol ?

Kurt-sm 11.07.2007 20:05

Цитата:

Сообщение от Skubent
_root.kol ?

нет, не работает

etc 11.07.2007 22:36

LoadVars в руки. И дожидаться загрузки надо, это не php, где контент файла доступен сразу на следующей строке после вызова функции загрузки.

Kurt-sm 11.07.2007 23:05

Цитата:

Сообщение от __etc
LoadVars в руки. И дожидаться загрузки надо, это не php, где контент файла доступен сразу на следующей строке после вызова функции загрузки.

А чуть-чуть разжевать нельзя?

etc 11.07.2007 23:52

А чуть-чуть открыть хелп?

Kurt-sm 12.07.2007 04:20

юзал этот урок
http://minolta.clan.su/forum/6-5-1

С file.php не идёт.
В чём разница между LoadVars и loadVariablesNum
И вообще как проверить что переменная загрузилась?
Я ставил условие типа
if (kol <> 0){
play
}

но это не помогло. Просто не играет дальше, будто бы переменные не загрузились, однако если на сцене есть текстовое поле с именем kol то оно принимает нужное значение... а всё рано зараза, не играет дальше ... В чём таки проблема?

Skubent 12.07.2007 10:51

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

Kurt-sm 12.07.2007 17:26

Цитата:

Сообщение от Skubent
Вот по той ссылке, которую ты дал - они проверяют, загружено чи ни. А тебе не мешало бы читать литературу, а не строить предположения и странные условия.

Я наверно плохо объясняю, но я сказал, что даже этот код не работает.
Я даже никаких изменений в нём не делал, а он ничего не загружает.
Смотрю в списке переменных , когда экспортирую мувик.
Может потому что у меня МХ ? (хотя в нём вроде есть эти функции, но я уже задолбался разбираться)

Skubent 12.07.2007 21:40

Так, а простое обращение к php файлу что дает ?

Kurt-sm 12.07.2007 22:00

я пытаюсь сделать хотябы без пхп а с тхт

Код:

var lv:LoadVars = new LoadVars();
lv.load("namealbom.txt");
function myFunction() {
    _root.kol = "надпись";
}
lv.onLoad = myFunction;
stop();

Но _root.kol не становится равным "надпись"
зато если сделать так

Код:

var lv:LoadVars = new LoadVars();
lv.load("namealbom.txt");
function myFunction() {
}
lv.onLoad = myFunction;
    _root.kol = "надпись";
stop();


Всё ок. Следовательно lv.onLoad не догружается.
К тому же когда я смотрю список переменных, там нет переменных хранящихся в namealbom.txt


ПОЧЕМУ?

etc 12.07.2007 22:36

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

Kurt-sm 12.07.2007 23:43

От этого он работать, к сожалению, не будет.

etc 12.07.2007 23:45

Зато и плюса тоже не будет.

Kikasso 13.07.2007 01:13

постейший проверочный скрипт:
Код:

var lv:LoadVars = new LoadVars();
lv.onData = function(src){
trace(src);
trace('-----------');
trace(unescape(src));
trace('-----------');
trace(  _root.kol ); //что это такое кстати?
trace('-----------');
}
lv.load("namealbom.txt");
stop();

Кстати, onLoad еще параметр передается.

GreatRash 13.07.2007 12:38

А чего бы не передать переменную через flashvars ???

Mnilionic 13.07.2007 19:43

если ты грузишь данные в объект lv, то и kol ищи в нём, а не в _root

Kurt-sm 13.07.2007 20:20

не работает
 
http://www.d2band.ru/ad.rar

Kurt-sm 13.07.2007 20:21

у кого-нить есть МХ ? дайте исходник ...
нифига не работает (((

Mnilionic 13.07.2007 21:39

Слухай сюда:

в этом объекте будут все загруженные переменные
Код:

var load_lv:LoadVars = new LoadVars();
А в этом обявляем переменные для отправки скрипту
Код:

var send_lv:LoadVars = new LoadVars();
например объявим my_name
Код:

send_lv.my_name = "007";
опишем функцию для отлова момента полной загрузки ответа скрипта.
Это делает событие onLoad
Код:

load_lv.onLoad = function(success:Boolean) {
        //...
};

Этой функции передаётся параметр success: если on равен true,
то данные полностью загружены,
если не равен то случилась какая-то лажа ( можете проверить подключение к нету :) )

Допишем нашу функцию-обработчик
Код:

load_lv.onLoad = function(success:Boolean) {
        if (success) {
                trace("данные загружены");
                Allright();
        } else {
                trace("Какая-то лажа!");
        }
}

Если всё прошло успешно и данные загрузились запускаем функцию Allright() ну или что-нить другое.
И в этой функции мы будем смотреть что нам ответит скрипт.
Как мы обозначили ответ скрипта будет в объекте load_lv, там и будем смотреть

Код:

function Allright(){
                trace(load_lv.otvet1);
                trace(load_lv.otvet2);
                trace("------------");
}

да! скрипт нам будет возвращать две параметра (это мы обозначим в пхп скрипте... позже).

Подготовка закончина, можно запулить запрос к скрипту и ждать ответа
Код:

send_lv.sendAndLoad("script.php", load_lv, "POST");
-------
В script.php у нас следующее...
Флеш присылает переменную my_name методом POST, вот там её и глядим
Код:

if( $_POST["my_name"] == "007"){
        $otvet1 = "Здравствуйте агент 007";
        $otvet2 = "в доступе разрешено!";
}else{
        $otvet1 = "я Вас не знаю ". $_POST["my_name"];
        $otvet2 = "в доступе отказано!";
}

в ответ флешу отправляем любое кол-ва переменных раздёлённых амперсантом в данномс случае две
Код:

print "otvet1=$otvet1&otvet2=$otvet2";
Так как флеш работает в юникоде PHP скрипт лучше сохранить в кодирове UTF-8
Чтоб русские буквы работали :)
Всё должно работать.

Если где опечатался извиняйте.

ps В MX вроде бы нельзя указывать тип переменной по этому можешь опустить эту фичу.
то есть вместо:
var send_lv:LoadVars = new LoadVars();
пиши:
var send_lv = new LoadVars();
и вместо
function(success:Boolean) просто function(success)

Kurt-sm 13.07.2007 23:44

2Mnilionic
Спасибо, Друг!

400kg 14.11.2007 03:06

У меня такая же проблема. Циклы не видят переменные. Хотя я использую loadVars sendAndLoad и в onLoad trace видит переменные, а циклы нет... wtf ?

вот значит:
kaka.php

Код:

<?php
if($_POST['password']=='12345'){
$message='TRUE';
} else {
$message='ERROR';
}
print "message=$message";
?>

AS

Код:

var sender:LoadVars = new LoadVars();
var loader:LoadVars = new LoadVars();
but.onRelease = function() {
        sender.password = pass.text;
        sender.sendAndLoad("kaka.php", loader, "POST");
};
loader.onLoad = function() {
        trace(this.message);
       
        if (this.message == "TRUE") {
                _root.gotoAndStop(2);
                info.text = "УРА";
        } else {
                info.text = "Пароль ложный";
        }
};

в итоге trace правильно выводит значения mesage, а в info.text всегда тупо "пароль ложный" ... что не так ?

Mnilionic 14.11.2007 16:17

А где циклы? Код рабочий у вас.


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

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