PDA

Просмотр полной версии : Чтение XML с удаленного сайта.


maxptz
07.12.2007, 13:16
День добрый.
Сам я в AS ничего не смыслю, поэтому обращаюсь к гуру за помощью :)

Нашел пример для создания динамической смены баннеров.
Т.е. Флешка читает XML файл и выводит связку КАДР + ЛИНК
Все работает замечательно, если баннеры и флешка на одном сайте, т.е.
bannerXML.load("banners.xml");
А вот если баннеры и XML размещаю на одном сайте, а флешку на другом, т.е. делаю
bannerXML.load("http://someurl.com/banners.xml");
то ничего не работает....

Уважаемые, подскажите, как решить эту проблему ?

Содержание AS


onClipEvent(load)
{
/* banner_init */
// loads a random banner from
// the bannerData object
banner_init = function()
{
bannerData = bannerXML.firstChild.childNodes;
bCnt = bannerData.length;
curBanner = Math.floor(bCnt*Math.random());
banner_loadNext();
}

/* banner_loadNext */
// loads a the next banner from
// the bannerData object
banner_loadNext = function()
{
curBanner < (bCnt-1) ? curBanner++ : curBanner = 0;
_blank.loadMovie(bannerData[curBanner].attributes.src);

// check to see if the banner has a link
if(bannerData[curBanner].attributes.href != undefined)
{
_button.href= bannerData[curBanner].attributes.href;
_button._visible = 1;
}
else
{
_button._visible = 0;
}

// check for a preferred target window
if(bannerData[curBanner].attributes.window != undefined)
{
_button.window = bannerData[curBanner].attributes.window;
}
else
{
_button.window = "_self";
}

// check for banner specific timeout
if(bannerData[curBanner].attributes.timeout != undefined)
{
timeout = bannerData[curBanner].attributes.timeout*1000;
}
else
{
timeout = bannerXML.firstChild.attributes.timeout*1000;
}
tStart = getTimer();
}

/* banner_ef */
// timer function for banner loading
banner_ef = function()
{
if(getTimer() >= timeout+tStart)
{
banner_loadNext();
}
}

// setup the XML object
bannerXML = new XML();
bannerXML.ignoreWhite = true;
bannerXML.load("banners.xml");
//bannerXML.load("http://someurl.com/banners.xml");
bannerXML.onLoad = banner_init;
}

onClipEvent(enterFrame)
{
banner_ef ();
}

Содержание XML

<banners timeout="5">
<banner src="http://URL.ru/1.gif" href="http://URL.ru/1.html" window="_blank" />
<banner src="http://URL.ru/2.gif" href="http://URL.ru/2.html" window="_blank" />
<banner src="http://URL.ru/3.gif" href="http://URL.ru/3.html" window="_blank" />
</banners>

Fernando Costa
07.12.2007, 13:26
копать в сторону crossdomain.xml

maxptz
07.12.2007, 14:00
копать в сторону crossdomain.xml

а можно ли подробнее ? :confused:

Fernando Costa
07.12.2007, 14:25
F1 > Understanding Security > Server-side policy files for permitting access to data > Allowing cross-domain data loading

maxptz
07.12.2007, 15:38
Разместил на сервере, где лежат картинки и XML этот файл crossdomain.xml

Пробовал так:


<?xml version="1.0" encoding="utf-8"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>


И так:


<?xml version="1.0" encoding="utf-8"?>
<cross-domain-policy>
<allow-access-from domain="server.gdeSWF.ru" />
</cross-domain-policy>


+ при компиляции SWF указал Access Network Only

лучше не стало...

Структура на сервере, где данные такая (все файлы в одно папке):


1.gif
2.gif
3.gif
banners.xml
crossdomain.xml


F1 > Understanding Security > Server-side policy files for permitting access to data > Allowing cross-domain data loading

вроде сделал все так как написано...

iNils
07.12.2007, 15:58
maxptz, когда хотите что-то добавить, используйте кнопку http://www.flasher.ru/forum/images/russian/style3/buttons/edit.gif и редактируйте последнее сообщение, а не создавайте несколько сообщений подряд.

Fernando Costa
07.12.2007, 16:10
а если еще почитать вот тут:

ActionScript classes > security (System.security) > loadPolicyFile (security.loadPolicyFile method)

maxptz
07.12.2007, 16:21
а если еще почитать вот тут:

ActionScript classes > security (System.security) > loadPolicyFile (security.loadPolicyFile method)

Если бы у меня был математический склад ума :)

Почитал. но как применить в моем случае - не понимаю.
Need help.

telit
07.12.2007, 19:39
Во flash:

System.security.allowDomain("*");

в HTML:

<embed... allowScriptAccess="always"...

etc
07.12.2007, 23:39
telit, вы проверяете свои слова или лишь бы ляпнуть очередную глупость?

maxptz
10.12.2007, 12:11
telit, вы проверяете свои слова или лишь бы ляпнуть очередную глупость?

Уважаемый, тогда может Вы подскажете ?

Люди, очень нужна помощь... Я в этих скриптах полный ноль.

maxptz
12.12.2007, 16:31
Ураааа! разобрался :-)

System.security.loadPolicyFile("xmlsocket://urlGDExml:80/crossdomain.xml");