Просмотр полной версии : Прием 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";
Правильно все понял?:)
Единственное, нужно как то выдернуть переменную 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 технологии, но ради одного прелоадера... думаю не стоит.
Эх, жалко. Вечер пролетел впустую...
Покажите код? 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().
Подпишитесь на 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("*");
А вот куда прописать, не подметили. Есть идеи?:)
Одна тема - один вопрос.
Прописать в загружаемую флешку, этим она как бы говорит - что берите меня, кто хотите.
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
Ну мужики, от души благодарю. Помогли. Прелоадер работает отлично. Сейчас еще масштабирование добавлю и дело будет закончено.:)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.