PDA

Просмотр полной версии : Проблема - не вызывается функция


jollyD
16.06.2010, 15:02
Не работает код, скорее всего я не вызываю функцию внутри.. немогу найти что не так

var ghostvar = 10;
playGhost = function () {
//

var php_processG:LoadVars = new LoadVars();
var post_variableG:LoadVars = new LoadVars();
post_variableG.string = 1;
post_variableG.sendAndLoad("ghs.php", php_processG, "POST");
php_processG.onLoad = function(success:Boolean) {
if (success) {
ghostvar = php_processG.result;
} else {
ghostvar = "0";
}
};
if (ghostvar != 0) {
tellTarget (_root.ghosts) {
gotoAndPlay(php_processG.result);
}
} else {
}
//
clearInterval(pauseGhost);
};
pauseGhost = setInterval(playGhost, 1000);
playGhost();

Хемуль
16.06.2010, 15:11
2 jollyD:
А ошибки какие-то выдаёт?
Лучше замените

tellTarget (_root.ghosts) {
gotoAndPlay(php_processG.result);
}

на

_root.ghosts.gotoAndPlay(php_processG.result);

jollyD
16.06.2010, 15:16
Заменил, нет кликаю - пишет всё ок. Тестирую - ничего не показывает... Ума не приложу почему не пашет

Хемуль
16.06.2010, 15:22
нет кликаю - пишет всё ок. Тестирую - ничего не показывает... Ума не приложу почему не пашет
Ничего не понял. Где кликаете?
Так если ничего не показывает, не обязательно, что в коде ошибка. Может оно-то и "пашет", просто не так, как вам хотелось бы. То есть, с точки зрения кода всё может быть ОК, а вот с точки зрения логики или каких-то других сторонних факторов...
Поставьте в разных местах trace'ы, посмотрите, какие строки кода исполняются, какие значения у разных свойств и переменных.

jollyD
16.06.2010, 15:32
Поставил трейс trace(ghostvar) в if succes и в ghostvar != 0 В одном - значение 10, в другом undefinied


Почему-то не видит php_processG.result

Хемуль
16.06.2010, 16:33
2 jollyD:
Проверьте, возвращает ли ghs.php текстовую строчку вроде:
result=...

jollyD
16.06.2010, 16:43
в самом php прописано echo"result=$calc"; переменная $calc существует...

Хемуль
16.06.2010, 16:50
2 jollyD:
А, погодите, так у вас неверно написано всё...
Этот код:

if (ghostvar != 0) {
tellTarget (_root.ghosts) {
gotoAndPlay(php_processG.result);
}
} else {
}

нужно вставить в обработчик onLoad после
ghostvar = php_processG.result;
А то у вас выходит, что вы только начали загружать результат работы скрипта, а уже обращаетесь к ghostvar.

jollyD
16.06.2010, 17:03
Вы имеете в виду так:?
var ghostvar = 10;
playGhost = function () {
//
var php_processG:LoadVars = new LoadVars();
var post_variableG:LoadVars = new LoadVars();
post_variableG.string = 1;
post_variableG.sendAndLoad("ghs.php", php_processG, "POST");
php_processG.onLoad = function(success:Boolean) {
if (success) {
ghostvar = php_processG.result;
if (ghostvar != 0) {
_root.ghosts.gotoAndPlay(php_processG.result);
trace(ghostvar);
} else {
}
trace(ghostvar);
} else {
ghostvar = "0";
}
};

//
clearInterval(pauseGhost);
};
pauseGhost = setInterval(playGhost, 5000);
playGhost();

Работает, теперь проблема что оно обновляется только при перезагрузке в браузере...
Задумывалось, чтоб этот код циклически обращался к php скрипту, брал переменные и подставлял их.. Можно как-то обойтись без перезагрузки? К тому же ручной!

Хемуль
16.06.2010, 17:49
2 jollyD:
Так вы же сами убиваете свой таймер в playGhost:
clearInterval(pauseGhost);
Вот и выполняется оно всего 1 раз.

jollyD
16.06.2010, 19:44
2 jollyD:
Так вы же сами убиваете свой таймер в playGhost:
clearInterval(pauseGhost);
Вот и выполняется оно всего 1 раз.
Хемуль, спасибо большое, что помог разобраться! :drinks: Всё работает как часы!!! :wacko: