XML + Timer

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
Ответить
Аватара пользователя
alexei
Разработчик
Разработчик
Сообщения: 836
Зарегистрирован: 21 янв 2010, 19:44

XML + Timer

Сообщение alexei »

Замучался. Вроде правильно пишу. Но иногда приложение глючит(запрос идет но данные не обновляются). Довольно криво реализованно. Как можно подобное организовать получше?

Код: Выделить всё

var myXML0:XML = new XML(); var XML_URL0:String = hostway+"Reload.aspx?id="+viewerid+"&authkey="+authkey+"&passkey="+passkey;var myXMLURL0:URLRequest = new URLRequest(XML_URL0); var myLoader0:URLLoader = new URLLoader(myXMLURL0);var myTimer:Timer = new Timer(15000);myTimer.addEventListener(TimerEvent.TIMER, timerListener);function timerListener (e:TimerEvent):void{XML_URL0 = hostway+"Reload.aspx?id="+viewerid+"&authkey="+authkey+"&passkey="+passkey;myXMLURL0 = new URLRequest(XML_URL0);myLoader0 = new URLLoader(myXMLURL0); myLoader0.addEventListener("complete", xmlReload); }function xmlReload(event:Event):void {    txthispoints.text="0";        myXML0 = XML(myLoader0.data);    if(myXML0.card1=="0")    {        hidden1.visible=false;    }    else    {        hidden1.visible=true;    }        if(myXML0.card2=="0")    {        hidden2.visible=false;    }    else    {        hidden2.visible=true;    }        if(myXML0.card3=="0")    {        hidden3.visible=false;    }    else    {        hidden3.visible=true;    }        if(myXML0.card4=="0")    {        hidden4.visible=false;    }    else    {        hidden4.visible=true;    }    txthispoints.text=myXML0.hispoint;    allowgame=myXML0.error;    if(myXML0.yourmove=="1")    {        end.visible=true;        pass.visible=true;        mymove.visible=true;        opmove.visible=false;    }    else    {        end.visible=false;        pass.visible=false;        mymove.visible=false;        opmove.visible=true;    }    if(myXML0.pass=="1")    {        end.visible=false;        pass.visible=false;    }    opponfieldcards = ["","","","","","","","",""];    opponfieldcards = (myXML0.hisfield).split("_");        if (int(opponfieldcards[0])>0 && int(opponfieldcards[0])<11)        {            standarto0.visible=true;        }        if (int(opponfieldcards[1])>0 && int(opponfieldcards[1])<11)        {            standarto1.visible=true;        }        if (int(opponfieldcards[2])>0 && int(opponfieldcards[2])<11)        {            standarto2.visible=true;        }        if (int(opponfieldcards[3])>0 && int(opponfieldcards[3])<11)        {            standarto3.visible=true;        }        if (int(opponfieldcards[4])>0 && int(opponfieldcards[4])<11)        {            standarto4.visible=true;        }        if (int(opponfieldcards[5])>0 && int(opponfieldcards[5])<11)        {            standarto5.visible=true;        }        if (int(opponfieldcards[6])>0 && int(opponfieldcards[6])<11)        {            standarto6.visible=true;        }        if (int(opponfieldcards[7])>0 && int(opponfieldcards[7])<11)        {            standarto7.visible=true;        }        if (int(opponfieldcards[8])>0 && int(opponfieldcards[8])<11)        {            standarto8.visible=true;        }         if (int(opponfieldcards[1])>10 && int(opponfieldcards[1])<21)        {            cop1.visible=true;        }        if (int(opponfieldcards[2])>10 && int(opponfieldcards[2])<21)        {            cop2.visible=true;        }        if (int(opponfieldcards[3])>10 && int(opponfieldcards[3])<21)        {            cop3.visible=true;        }        if (int(opponfieldcards[4])>10 && int(opponfieldcards[4])<21)        {            cop4.visible=true;        }        if (int(opponfieldcards[5])>10 && int(opponfieldcards[5])<21)        {            cop5.visible=true;        }        if (int(opponfieldcards[6])>10 && int(opponfieldcards[6])<21)        {            cop6.visible=true;        }         if (int(opponfieldcards[7])>10 && int(opponfieldcards[7])<21)        {            cop7.visible=true;        }         if (int(opponfieldcards[8])>10 && int(opponfieldcards[8])<21)        {            cop8.visible=true;        }    for (var i:int = 1; i < 9; i++)     {         if(int(opponfieldcards[i])>10 && int(opponfieldcards[i])<21)        {        var myPattern:RegExp = /1/;        opponfieldcards[i]=opponfieldcards[i].replace(myPattern, "+");        }    }     otxt0.text=opponfieldcards[0];    otxt1.text=opponfieldcards[1];    otxt2.text=opponfieldcards[2];    otxt3.text=opponfieldcards[3];    otxt4.text=opponfieldcards[4];    otxt5.text=opponfieldcards[5];    otxt6.text=opponfieldcards[6];    otxt7.text=opponfieldcards[7];    otxt8.text=opponfieldcards[8];}myTimer.start();stop(); 
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: XML + Timer

Сообщение bodnar »

рискну предположить из за чего может быть косяк:
происходит ошибка загрузки, и обновление данных не происходит в силу того что события ошибки нет нужно добавить еще один лисенер на ошибку и в нем сразу же начинать обновление данных
Аватара пользователя
alexei
Разработчик
Разработчик
Сообщения: 836
Зарегистрирован: 21 янв 2010, 19:44

Re: XML + Timer

Сообщение alexei »

bodnar Извиняюсь, но нельзя ли это написать кодом. А то флеш только начал учить(( . Теоретически может быть, сервер довольно удален. И из 3к пакетов 2 потеряно.

Код: Выделить всё

     if (myLoader0==null)    {        return;    } 
Может так?
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: XML + Timer

Сообщение bodnar »

ну думаю как то так

Код: Выделить всё

myLoader0.addEventListener(IOErrorEvent.IO_ERROR, loaderror) 
и в этой функции loaderror по новой инициировать загрузку xml файла
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: XML + Timer

Сообщение Александр »

alexei
данные не обновляются? Может причина в том, что они кешируются? Тогда используй POST запрос или добавляй рандомную переменную.

Код: Выделить всё

var XML_URL0:String = hostway+"Reload.aspx?id="+viewerid+"&authkey="+authkey+"&passkey="+passkey + '&' + Math.random();
Ответить