PDA

Просмотр полной версии : как получить переменную в функцию?


DECIDE
25.12.2006, 02:33
У мну такая трабла
После загрузки данных запускается функция мне нужно получить переменную из основной сцены _root.id ничего не даёт

Есть ли, во флаш функция типа global как в PHP?

etc
25.12.2006, 02:34
_global есть.

DECIDE
25.12.2006, 02:59
точно спасибо большое

DECIDE
25.12.2006, 03:18
чё то не срабатывает
пробовал id=_global.id может не правильно?

wvxvw
25.12.2006, 05:05
_global'ов может быть несколько если загружались разные клипы с разных адресов. Мб поэтому?

CorC
25.12.2006, 10:18
исходничек в студию

DECIDE
25.12.2006, 14:56
ну вот упрощённая версия всё находится в одном кадре в основной сцене, никаких мувмков

id="xxx";
loadVariables("http://test1.ru/prov.php",this)
this.onData=function(){
id=_global.id
getURL("javascript:alert('"+id+"')")
}

или вместо getURL("javascript:alert('"+id+"')") поставить динамик текст с вар: id

Значение не передаётся в функцию.

etc
25.12.2006, 15:10
_global.id="xxx";
loadVariables("http://test1.ru/prov.php",this)
this.onData=function(){
var id =_global.id;
getURL("javascript:alert('"+id+"')")
}

CorC
25.12.2006, 15:12
зачем так сложно?
так не получится?:

id="xxx";
mc.onData=function(){
getURL("javascript:alert('"+id+"')");
}

DECIDE
25.12.2006, 15:25
сам не пробовал?
нет не передаётся переменная id в функцию

pkfun
25.12.2006, 15:27
this.onData к чему относится?
Как проверяется загрузка с помощью loadVariables?

etc
25.12.2006, 15:40
Пользуйте LoadVars.

CorC
25.12.2006, 15:41
сам не пробовал?
нет не передаётся переменная id в функцию
меня у вас this смущает :) и loadVariables

DECIDE
25.12.2006, 15:42
id="xxx";
It=setInterval(function(){clearInterval(It);
getURL("javascript:alert('"+id+"')");
},1000)

так работает

Раскрою суть проблемки:
Я делаю динамическое обновление страницы через флэш
в флаш подаётся команда на загрузку блока данных. После того как они получены их нужно вставить в страницу в указаный id - таблицы, див, абзаца и тд. Но никак не могу получить данный id в функцию когда данные загрузились.

CorC
25.12.2006, 15:45
а ты не говорил что у тебя ид еще и от загрузки зависит :)

DECIDE
25.12.2006, 15:57
Пользуйте LoadVars.
loadVariables и LoadVars идентичные команды
я сначала делал с LoadVars, но потом переделал с loadVariables оказалось проще

Я извиняюсь я вообще ничего про флаш не знаю, так по мере необходимости делаю что приспичит и пытаю тех кто в этом что-то понимает.

Ещё с моей стороны будет одна просьба не могли бы вы разобратся почему у меня глючит полание на сайте. Это типо чата. Через какоето время у меня виснет комп. У приятеля всё нормально, а меня глючит бывает шрифт меняется на жирный.

iNils
25.12.2006, 16:00
loadVariables и LoadVars идентичные командыLoadVars более удобен.
я сначала делал с LoadVars, но потом переделал с loadVariables оказалось прощеС точностью до наоборот.

DECIDE
25.12.2006, 16:11
Я конечно с радостью бы дал исходник. Это слишком сложная штука получится. Мне нужно будет высылать не только fla, но и сам движок портала с которым всё это взаимодействует.
Но движок я Вам выслать не могу.

pkfun
25.12.2006, 17:07
id="xxx";
It=setInterval(function(){clearInterval(It);
getURL("javascript:alert('"+id+"')");
},1000)


Раскажите какой смысл вы вложили в этот конкретный код? Какая-то подозрительная конструкция...

DECIDE
25.12.2006, 17:08
LoadVars более удобен.
С точностью до наоборот.
Да какая разница, мне нужно получить переменную из основной сцены в
this.onData=function(){ здесь }
Ну же вы же знаете ...

pkfun
25.12.2006, 17:13
Вот в том то и дело, что событие this.onData получается у вас, судя по всему, само по себе, а событие успешной загрузки внешних данных само по себе. Вам нужно их синхронизировать так, чтобы в момент наступления this.onData внешние данные уже были успешно загружены.

ps. На всякий случай скажу, что у loadVariables нет событий onData и onLoad.

DECIDE
25.12.2006, 17:16
Раскажите какой смысл вы вложили в этот конкретный код? Какая-то подозрительная конструкция...
Просто проверял можно ли получить переменную в функцию
В данном коде всё работает.
Не работает у меня после загрузки данных получить перевенную из основной сцены в this.onData=function(){
id - нет
_root.id - нет
_global.id - нет
пробовал даже this.id
}

etc
25.12.2006, 17:17
Тебе уже сказали — пользуй LoadVars. Если ты не хочешь его использовать, то мы тебе уже помочь ничем не можем.
Этот onData ещё хрен знает где вызовется, там с областями видимости и контекстом выполнения полный бардак.

CorC
25.12.2006, 17:17
неужели кроме this нельзя ничего другого подставить?
а то я уже говорил что оно меня смущает

DECIDE
25.12.2006, 17:18
Вот в том то и дело, что событие this.onData получается у вас, судя по всему, само по себе, а событие успешной загрузки внешних данных само по себе. Вам нужно их синхронизировать так, чтобы в момент наступления this.onData внешние данные уже были успешно загружены.

ps. На всякий случай скажу, что у loadVariables нет событий onData и onLoad.
Хорошо сейчас переделаю и проверю, хорошо бы получилось.

pkfun
25.12.2006, 17:20
Значит this.onData все же отосится к загрузчику. И каким классом вы производите загрузку?
Про тот код. Мне показалось странным, что вроде вы запускаете интервал, тут же его(?) останавливаете...

CorC
25.12.2006, 17:23
2pkfun нет через секунду
2DECIDE послушайтесь нас и пределайте на LoadVars

pkfun
25.12.2006, 17:29
2pkfun нет через секунду
Ясно.:)

DECIDE
25.12.2006, 17:43
Всё переделал аналогичная история. Не могу получить переменную id и всё. С LoadVars получается ещё верёвочней...

vrs=new LoadVars();
vrs.onLoad=function(){
id - нет
_root.id - нет
_global.id - нет
}
vrs.load("http:/test1.ru/prov.php");

мне не хочется передавать id в файл, а потом получть её как vrs.id Я хочу просто вытащить её из основных переменных на сцене.

DECIDE
25.12.2006, 17:53
в принципе если в простой функции переменная доступна, то можно из загрузочной запустить простую и всё.

vrs=new LoadVars();
vrs.onLoad=function(){rfun()}
rfun=function(){
getURL("javascript:alert('"+id+"')");
}
vrs.load("http:/test1.ru/prov.php");

Но как же получить переменную не в простую функцию???

CorC
25.12.2006, 17:54
может в пхп дело?

vrs.onLoad=function(s){
if(s){
trace(unescape(vrs));
}else{
trace("not loaded");
}
}

что выдает?

DECIDE
25.12.2006, 18:07
может в пхп дело?
Нет Я раньше так и делал передавал сначала id в файл, а потом получал обратно. Сейчас я убрал передачу в php и из него всё что связано с id

что выдает?
tx=+%3Cp%3E%B7+%3Ca ....

tx это данные, которые вставляются в страницу закодированы urlencode PHP командой для передачи без ошибок, если в тексте будет например знак & то данные придут не все..

tx=+%3Cp%3E%B7+%3Ca ....
да это выдаётся в браузере когда набираю команду по которой идёт запрос из флаш.

CorC
25.12.2006, 18:30
ну и как оно id нужное загрузит если там такая билиберда?

DECIDE
25.12.2006, 18:41
ну и как оно id нужное загрузит если там такая билиберда?
Да не передаю Я и не загружаю id. Я хочу получить его из переменной которая находится на сцене. А выше Я просто ответил на твой вопрос, что передаёт PHP.

iNils
25.12.2006, 18:52
Пример.

DECIDE
25.12.2006, 19:07
iNils спасибо Вам конечно за то что решили наверно мою проблему, но я не такой продвинутый флэшер и у меня нет такого редактора, которым пользуетесь Вы, у меня просто Flash MX 6-я версия и она не поддерживает тот файл, который Вы вложили.

iNils
25.12.2006, 19:18
А там ничего нет кроме:
id = 456;
var lv = new LoadVars ();
lv.onLoad = function () {
getURL ("javascript:alert('" + id + "')");
};
lv.load ("test.txt");

etc
25.12.2006, 19:20
iNils, может this.id?

А, или я что-то не понимаю уже ничего :D

iNils
25.12.2006, 19:23
iNils, может this.id?Тогда будет так
id = 456;
var lv = new LoadVars ();
lv.onLoad = function () {
trace (this.id) // undefined
trace (id) // 456
//getURL ("javascript:alert('" + id + "')");
};
lv.load ("test.txt");

DECIDE
25.12.2006, 19:25
РАБОТАЕТ!!!
Спасибо большое! Попробую переделать свой код.

etc
25.12.2006, 19:27
iNils, а, я понял. Я думал, что id надо получить из txt.

iNils
25.12.2006, 19:29
iNils, а, я понял. Я думал, что id надо получить из txt.Если бы все всё понимали, то обсуждение не затянулось бы на 5 страниц :D

DECIDE
25.12.2006, 19:36
Странно Я так долго мучился
вот проверил так:

id=777;
this.onData=function(){
getURL ("javascript:alert('" + id + "')");
}
loadVariables("test.txt",this)

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

DECIDE
25.12.2006, 19:45
Спасибо всем, за мой дурацкий вопрос.
И я извиняюсь, что мучил Вас так долго и за то, что не умею нормально объяснить толком, что именно мне нужно.

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