PDA

Просмотр полной версии : Прием GET параметра


StasHappy
16.01.2013, 21:00
Вечер добрый друзья.

Сразу скажу, особыми знаниями в ActionScript не блещу.
Имеется ссылка:

"http://www.site.ru/user=StasHappy"

Как можно взять содержимое Get параметра user и вставить вот сюда:

var request:URLRequest = new URLRequest(СЮДА);

Где-то читал, что можно воспользоваться классом URLLoader. Пытался разобраться с ним сам, так ничего и не понял...

Делаю внешний прелоадер, который:
1. Берет ссылку из GET параметра
2. Отображает прогресс загрузки
3. По окончинии, загружает в себя принятый swf файл.

iflamberg
16.01.2013, 21:14
Не, не, не. С URLLoader+URLRequest можно отправить GET или POST cgi-скрипту и получить от него ответ.
Делается примерно так:

var url:String = "http://www.[yourDomain].com/application.jsp";
var request:URLRequest = new URLRequest(url);

var variables:URLVariables = new URLVariables();
variables.exampleSessionId = new Date().getTime();
variables.exampleUserLabel = "guest";
request.data = variables;
request.method = URLRequestMethod.POST;

var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete);
urlLoader.load(request);

function urlLoader_complete(evt:Event):void {
lbl.text = urlLoader.data.lastName + "," + urlLoader.data.firstName;
addChild(lbl);
}


А тебе, как я понимаю, нужно взять с открытой страницы браузера параметры, которые были переданы странице с помощью метода GET, и использовать их дальше в своей флешке?

StasHappy
16.01.2013, 21:23
А тебе, как я понимаю, нужно взять с открытой страницы браузера параметры,
То есть с адресной строки.. Нет, чуть чуть не так. В интернете нашел урок, по вставке Flash ролика на страницу. Цитирую:
Вставка флеш на сайт методом Flash Satay
<object type="application/x-shockwave-flash" data="loader.swf?path=myContent.swf" width="280" height="600"/>
<param name="movie" value="/banners/simply.swf" />
<p>Альтернативное содержимое</p>
</object>
Стоит отметить, что для большинства флеш приложений так или иначе нужно использовать прелоадер. В данном слечае путь к загружаемому файлу передается через атрибут data и Get-переменную → data="loader.swf?path=myContent.swf", можно передавать путь и другими способами, например, через FlashVars

Прелоадеру(loader.swf) передается параметр patch. Вот с этого все и пошло у меня. Единственное, нужно как то выдернуть переменную patch и использовать ее в коде прелоадера.:)

Добавлено через 19 минут
За пример, огромное спасибо. Очень рад что помогли.

То есть, вот тут мы прописываем домен:
var url:String = "http://www.[yourDomain].com/application.jsp";
А здесь прописываем GET параметр:
variables.exampleUserLabel = "guest";

Правильно все понял?:)

alatar
16.01.2013, 21:57
Единственное, нужно как то выдернуть переменную patch и использовать ее в коде прелоадера.:)

В вашем прелоадере
var url:String = loaderInfo.parameters.path;

Добавлено через 1 минуту
Для почитать
http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#loaderInfo
http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/display/LoaderInfo.html#parameters

StasHappy
17.01.2013, 01:42
Ребят. По правде говоря, у меня ничего не получается. Может кто-нибудь потратит чуть своего времени и напишет мне код? А то чувствую, сам не справлюсь... Можно было бы конечно изучить Flash технологии, но ради одного прелоадера... думаю не стоит.
Эх, жалко. Вечер пролетел впустую...

GBee
17.01.2013, 02:02
Покажите код? Alatar вам прально написал.

StasHappy
17.01.2013, 02:31
Код(первый кадр):

var ldr:Loader = new Loader();
var url:String = loaderInfo.parameters.path;
if(url!=null) {
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,swf_loaded);
ldr.load(new URLRequest(url));

function swf_loaded(e:Event):void{
nextFrame();
}
}
stop();

Второй кадр:
addChild(ldr);


Что если вот так попробовать?

Добавлено через 1 час 40 минут
Ребят. Вроде что-то вышло у меня. Единственное, если указать в переменной path , несуществующий файл(ссылку), выходит вот такая ошибка:
Error #2044: Необработанный IOErrorEvent:. text=Error #2036: Загрузка не завершена.
Можно ли поставить какую либо проверку, на этот счет. Скажем, если загрузка прошла с ошибкой, делаем stop().

alatar
17.01.2013, 04:19
Подпишитесь на IOErrorEvent и обрабатывайте.

StasHappy
17.01.2013, 04:25
Подпишитесь на IOErrorEvent и обрабатывайте.
Добавил эти строки:

ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,swf_error);

function swf_error(e:Event) {
removeEventListener(Event.COMPLETE,swf_loaded);
}

Добавлено через 1 час 8 минут
Еще один ньюнс.
Некоторые flash'ки, вызывают ошибку:
SecurityError: Error #2070: Нарушение изолированной среды: вызывающий объект...итд.

На одном сайте, посоветовали прописать вот это:
Security.allowDomain("*");
А вот куда прописать, не подметили. Есть идеи?:)

GBee
17.01.2013, 09:51
Одна тема - один вопрос.
Прописать в загружаемую флешку, этим она как бы говорит - что берите меня, кто хотите.

StasHappy
17.01.2013, 15:53
Прописать в загружаемую флешку
Ну это, само собой разумеющееся, друг мой.:)
Пробовал вставлять, выходит ошибка: 1119: Обращение возможного неопределенного свойства security через ссылку со статическим типом Class .
Как вставить правильно?:)

iflamberg
17.01.2013, 16:42
1119: Обращение возможного неопределенного свойства security через ссылку со статическим типом Class .
вы security с маленькой буквы что ли написали?
А возможно нужно сделать импорт сначала
import flash.system.Security;

StasHappy
17.01.2013, 17:05
вы security с маленькой буквы что ли написали?
Ох, и вправда. Благодарю. Вписал с большой буквы, все нормализовалось. Правда теперь при загрузке flash выходит эта ошибка:

Error #2044: Необработанный securityError:. text=Error #2048: Нарушение изолированной среды: preview.swf не может загрузить данные из xmlsetting/slide_config.xml.

Беда не приходит одна. Не может загрузить *.xml..

iflamberg
17.01.2013, 17:15
Тогда вы малой кровью, одним Security.allowDomain("*"); не обойдетесь. Гуглите про security policy, не знаю, море инфы, вот, например http://as3coder.blogspot.com/2011/01/flash-player.html. Создавайте и кидайте crossdomain.xml на сервер.

StasHappy
17.01.2013, 17:22
Создавайте и кидайте crossdomain.xml на сервер.
То есть нужно создать файл crossdomain.xml на сервере, с которого грузим flash ролик.

Текст файла(для всех доменов):
<cross-domain-policy>
<allow-access-from domain="*" to-ports="80"/>
</cross-domain-policy>

Вроде все правильно понял...

iflamberg
17.01.2013, 17:34
У меня у самого не весь "пазл" по этой теме сложился, но что-то типа этого.

StasHappy
17.01.2013, 17:36
Ну мужики, от души благодарю. Помогли. Прелоадер работает отлично. Сейчас еще масштабирование добавлю и дело будет закончено.:)