PDA

Просмотр полной версии : получение переменной из строки заголовка


Ясь
30.11.2006, 12:17
всем привет.
такая цель:
строка заголовка, например: http://127.0.0.1/index.php?id=5&name=petr
ну и тд и тп.
мне надо во флеше сделать обработчик, что мол, если id = 5, то перейти к такому-то кадру.
так вот собственно подскажите, пожалуйста, как мне извлечь переменную в actionscript из url.
заодно подскажите пожалуйста как это будет выглядеть, если я переменную буду передавать не GET'ом, как написано выше, а POST'ом.
заранее спасибо

ps извините, если это где-то уже обсуждалось, я не смог найти. может не там искал? да и пока что плохо понимаю, что и где правильно искать. не судите строго )

Kikasso
30.11.2006, 13:20
Ясь, ищи по слову flashvars - это если при загрузке. Если там php, пусть впечатывает нужные парамерты в object/embed. Рекомендую.
Если POST`ом - флеш сам должен делать запрос. Для этого используются LoadVars и XML.
Обсуждается практически каждую неделю, посмотри по этим словам.

etc
30.11.2006, 13:52
Использовать SWFObject для этого.

Ясь
01.12.2006, 11:57
ну вот я решил попробовать через этот SWFObject. нашел и скачал по нему небольшую доку, скачал сам swfobject. вот вроде с ним я слегка разобрался (ну т.е. для моей конкретной цели должно хватить). вообщем в php файле (ну тут правда особо php пока что нету, только JS :)) у меня следующее:


<script type="text/javascript" src="swfobject.js"></script>

<div id="flashcontent"></div>

<script type="text/javascript">
var so = new SWFObject("Untitled-1.swf", "Untitled-1", "550", "400", "7", "#ffffff");
so.addParam("cont", getQueryParamValue("cont"));
so.write("flashcontent");
</script>


а во флеше мне как бы нужен обработчик, что мол если cont = тому-то, то перейти к такому-то кадру, а если cont = этому, то к этому.
я предположительно сделал следующее:
на самом первом кадре на белую область, т.е. не на объект какой-нибудь, а типа на фон (может кстати для этого надо было отдельный слой создавать?) я написал:


if (cont == "info")
{
gotoAndPlay(1);
}
else if (cont == "music")
{
gotoAndPlay(51);
}
else if (cont == "photos")
{
gotoAndPlay(101);
}
else
{
gotoAndPlay(1);
}

в итоге я получил, что флешка отображается, но работает не корректно, т.е. просто крутит с самого первого кадра и все.
по идее в той документации, что я нашел по SWFObject было написано, что если бы я использовал не getQueryParamValue, т.е. писал бы просто so.addParam("cont", "znachenie"); , то тогда доступ бы к таким переменным во флеше я мог бы получить через _root. я так понимаю, что при использовании getQueryParamValue переменная моя должна быть доступна тоже через _root. но я честно говоря плохо себе представляю, что такое _root. и как мне от туда взять переменную мою. читал мануал, но ничего поэтому поводу толком не понял. я пробовал разными способами, но что-то не получилось. может просто я не знаю элементарного чего-нибудь (синтаксиса, например) и поэтому у меня не получается. подскажите пожалуйста, что именно я должен в моем случае написать.
заранее спасибо

etc
01.12.2006, 14:00
_root.cont надо писать, а лучше _level0.cont

з.Ы. То, что самостоятельно нашёл SWFObject — вери гуд.

Ясь
01.12.2006, 14:52
так а это где надо написать?
if (_level0.cont == "info") {
gotoAndPlay(1);
}ну и так далее по аналогии? или как?

etc
01.12.2006, 15:06
да, так.

Ясь
01.12.2006, 18:21
блин, что-то не получается :( где-то собака зарыта....
скорее всего я по не знанию что-то очевидное для тебя делаю совершенно неправильно :) давай попробуем разобраться.
когда я скачал SWFObject, то там в самом файле мне надо что-нибудь править и под себя вписывать?? я лично ничего там не менял.
во флеше, еслои я перед моим обработчиком напишу следующее:

var cont = "photos";
//ну и дальше пошел обработчик
if (cont == "info")
{
gotoAndPlay(1);
}
else if (cont == "music")
{
gotoAndPlay(51);
}
...
...
то так у меня обработчик срабатывает. т.е. получается обработчик написан правильно (ну я опасался за синтаксис...)
я пробовал делать так:
if (_level0.cont == "info")
{
gotoAndPlay(1);
}
...
...

так у меня обработчик никак не срабатывает. просто крутиться флешка с самого начала.
также я пробовал делать так:

var cont = _level0.cont;
if (cont == "info")
{
gotoAndPlay(1);
}
...
...
эффект такой же как в предыдущей ситуации...
подскажи плиз где собака зарыта.

ps на всякий случай: у меня flash mx professional 2004 (version 7.0). ну и на сколько я понял, action script у меня 2.0 (сужу по диалогу экспорта мувика, там при выборе версии action script'а только версии 1.0 и 2.0; ну я конечно сохряняю в 2.0). SWFObject v1.4.4

pps если хочешь, то могу выложить свои файлики, там совсем немного. может так будет проще разобраться?

KidsKilla
01.12.2006, 18:25
напиши trace('"'+_level0.cont+'"')

Kikasso
01.12.2006, 18:33
Вот корень зла:so.addParam("cont", getQueryParamValue("cont"));
Тебе надо чтобы это прописалось во flashvars.
пиши так:so.addVariable("cont", getQueryParamValue("cont"));

Ясь
01.12.2006, 18:36
Вот корень зла:
Тебе надо чтобы это прописалось во flashvars.
пиши так:so.addVariable("cont", getQueryParamValue("cont"));
о!!!!!!!! ура!!!!!!!!!!! :))))))
заработало!!!!
спасибо огромное!!!!!
всем большое спасибо! :)

MFG
18.02.2007, 21:26
Ясь если не сложно можешь кинуть исходник на мыло doctornet.kirov@gmail.com а то уже давно бьюсь и не получается ни чего