PDA

Просмотр полной версии : странности с загрузкой внешних данных


cbat
05.07.2007, 16:11
привет всем!
написал я небольшой скрипт для флеша который отображает некоторую внешнюю инфу и несколько картинок через XML. вот. но только возникла трабла с работоспособностью данной флешки на разных машинах. т е у меня на машине все внешние данные и картинки грузятся, а вот у знакомого на месте где должна отображаться надпись - undefined, картинки аналогичным образом тоже не подгружаются! т е внешние данные по какой-то не понятной мне причине (видимо в недостаточном знании AS :) ) отказываются грузится! странно то, что я у себя в отделе тестировал флешку на 5 компах и все ОК!
вот код который юзаю:

var xmlWine:XML = new XML();
xmlWine.ignoreWhite = true;
xmlWine.load("http://site/get_xml.php");
xmlWine.onLoad = function()
{
for (i=0; i<=4; i++)
{
var url = "http://site/img.php?id="+xmlWine.childNodes[i].childNodes[0].firstChild+"&type=2";
var el = "btn"+i;
_root.createEmptyMovieClip(el, i);
_root[el]._x=50+(i*100);
_root[el]._y=185;
_root[el].createEmptyMovieClip("cont", 0);
_root[el].cont.loadMovie(url);
_root[el]._alpha=80;
_root[el].id = xmlWine.childNodes[i].childNodes[0].firstChild;
_root[el].wine_name = xmlWine.childNodes[i].childNodes[1].firstChild;
_root[el].desc = xmlWine.childNodes[i].childNodes[2].firstChild;
if(!i)
{
sel_el=_root[el].id;
_root.photo.photo1.loadMovie("http://site/common/img/wines/"+_root[el].id+".gif");
_root.photo.gotoAndPlay(2);
_root.text_anim.wine_text.desc.text = _root[el].desc;
_root.text_anim.wine_text.wine_name.text = _root[el].wine_name;
_root.text_anim.wine_text.wine_name.bold = true;
}
_root[el].onRollOver = function(){
this._alpha=100;
if(this.id!=sel_el){
sel_el=this.id;
_root.photo.photo1.loadMovie("http://site/common/img/wines/"+this.id+".gif");
_root.photo.gotoAndPlay(2);
_root.text_anim.wine_text.desc.text = this.desc;
_root.text_anim.wine_text.wine_name.text = this.wine_name;
_root.text_anim.wine_text.wine_name.bold = true;
_root.text_anim.gotoAndPlay(2);
}
}
_root[el].onRollOut = function(){
this._alpha=80;
}
_root[el].onPress = function(){
getURL("http://site/wine_catalog.php?wine_id="+this.id)
}
}
}


может кто сталкивался с подобной проблемой?

etc
05.07.2007, 16:54
Версии плееров, браузеров и прочего совпадают?

$mival
05.07.2007, 18:14
Если в офисе всё ОК, то можно предположить, что код тут не причем...

cbat
06.07.2007, 11:32
Версии плееров, браузеров и прочего совпадают?
да! совпадают! в том и проблема, что у меня на компах все работает, а у знакомого нет! :mad:

Если в офисе всё ОК, то можно предположить, что код тут не причем...

Я тоже так думаю, но все равно не могу никак понять в чем может быть проблема!
Хотя есть предположение что у знакомого стоит какой нить фаревол который не дает флешке обратится к xmlю.

iNils
06.07.2007, 12:04
cbat, есть кнопка http://www.flasher.ru/forum/images/russian/style3/buttons/edit.gif, поэтому не надо создавать несколько сообщений подряд, надо исправить последнее в теме.

etc
06.07.2007, 13:26
В таком ужасном коде как-то совсем нет желания разбираться…

cbat
06.07.2007, 14:03
В таком ужасном коде как-то совсем нет желания разбираться…
вот в том и дело что я акцент на код не ставил, тк он работает на всех машинах, которые мне были только доступны!
вот текст который генерируется http://site/get_xml.php:

<wine>
<id>7</id>
<name>TEXT</name>
<desc>TEXT</desc>
</wine>
<wine>
<id>7</id>
<name>TEXT</name>
<desc>TEXT</desc>
</wine>
<wine>
<id>7</id>
<name>TEXT</name>
<desc>TEXT</desc>
</wine>
<wine>
<id>7</id>
<name>TEXT</name>
<desc>TEXT</desc>
</wine>

вот откомментил код, который вставляется в первый кадр:

// думаю здесь все ясно:
var xmlWine:XML = new XML();
xmlWine.ignoreWhite = true;
xmlWine.load("http://site/get_xml.php");
xmlWine.onLoad = function()
{
for (i=0; i<4; i++)
{
// формируем ссылку на картинку
var url = "http://site/img.php?id="+xmlWine.childNodes[i].childNodes[0].firstChild+"&type=2";
var el = "btn"+i;
// создаем мувик в который засовываем картинку расположенной по ссылке которую сформировали выше
_root.createEmptyMovieClip(el, i);
_root[el]._x=50+(i*100);
_root[el]._y=185;
_root[el].createEmptyMovieClip("cont", 0);
_root[el].cont.loadMovie(url);
_root[el]._alpha=80;
// привязываем к мувику 3 переменных id, wine_name, desc
_root[el].id = xmlWine.childNodes[i].childNodes[0].firstChild;
_root[el].wine_name = xmlWine.childNodes[i].childNodes[1].firstChild;
_root[el].desc = xmlWine.childNodes[i].childNodes[2].firstChild;
if(!i)
{
// загрузка в мувик большой картинки
sel_el=_root[el].id;
_root.photo.photo1.loadMovie("http://site/common/img/wines/"+_root[el].id+".gif");
_root.photo.gotoAndPlay(2);
_root.text_anim.wine_text.desc.text = _root[el].desc;
_root.text_anim.wine_text.wine_name.text = _root[el].wine_name;
_root.text_anim.wine_text.wine_name.bold = true;
}
// обработчики событий для каждой картинки
_root[el].onRollOver = function(){
this._alpha=100;
if(this.id!=sel_el){
sel_el=this.id;
_root.photo.photo1.loadMovie("http://site/common/img/wines/"+this.id+".gif");
_root.photo.gotoAndPlay(2);
_root.text_anim.wine_text.desc.text = this.desc;
_root.text_anim.wine_text.wine_name.text = this.wine_name;
_root.text_anim.wine_text.wine_name.bold = true;
_root.text_anim.gotoAndPlay(2);
}
}
_root[el].onRollOut = function(){
this._alpha=80;
}
_root[el].onPress = function(){
getURL("http://site/wine_catalog.php?wine_id="+this.id)
}
}
}


в общем работу данной флешки можно посмотреть здесь-> http://test.kardinal-vino.ru

etc
06.07.2007, 14:09
Причин может быть сколько угодно и отрицать, что в этом виноват код, тоже не стоит.

Kikasso
06.07.2007, 15:53
вот текст который генерируется http://site/get_xml.php:
А где корневая нода? Прям вот такое и генерится? xml валидный?

cbat
09.07.2007, 12:54
А где корневая нода? Прям вот такое и генерится? xml валидный?
неа! xml не валидный (в связи с недостаточным знанием)! думаешь в этом может быть трабла?

Kikasso
09.07.2007, 13:21
Несомненно. Проверяйте status:
xmlWine.onLoad = function(ok){
if(!ok || this.status < 0){
trace (ok + ' ' + this.status);
return;
}
// а вот тут все нормально
//....
}
status - в хелпе. Кодировка xml должна быть utf-8.

cbat
09.07.2007, 16:29
Несомненно. Проверяйте status:
xmlWine.onLoad = function(ok){
if(!ok || this.status < 0){
trace (ok + ' ' + this.status);
return;
}
// а вот тут все нормально
//....
}
status - в хелпе. Кодировка xml должна быть utf-8.
спасибо! щас буду пробовать! :)
попробовал! условие (!ok || this.status < 0) не срабатывает, значит дело не в xml. короче, я понял в чем дело! правда не понял как это решить:
undefined получатся если использовать адрес вместе с www, т е
www.kardinal-vino.ru - выдает undefined
kardinal-vino.ru - все ok! мдя... :wacko:

-------------------

в общем проблема решилась указанием в xmlWine.load() локального пути к файлу, а не через http. правда так и не понял как метод лоад() работает с протоколом http.
Спасибо всем кто учавствовал в обсуждении.