Jag håller på att fixa med en chattfunktion till en hemsida,
denna är en sk. "realtidschatt" dvs. att chatt-texten
uppdateras löpande utan att själva användarinterfacet behöver uppdateras.
Nu till mitt problem.
Jag har valt att skriva diverse ASP.NET kod för att sköta själva införandet/hämtandet av chatt-meddelanden
till/från en vanlig textfil.
Flash-interfacet läser sedan med hjälp av loadVariables() funktionen in
den text som har skrivits till textfilen.
Allt detta fungerar utmärkt så länge jag kör lokalt på min webserver (localhost).
Men efter att jag har tankat upp sakerna till mitt webhotell så vill inte Flash-interfacet fungera som tänkt.
Flashen laddar alltså inte in texten från textfilen.
Följande kod finns på Frame 1 i Flashen:
loadVariablesNum("rettext.aspx",0, "POST");
Jag vet att det inte är något problem med variabelnamn då allt detta fungerar när jag kör lokalt som sagt.
Det jag börjar misstänka är att Flash inte "hinner" snappa upp den returnerade texten från "rettest.aspx",
utan bara swichar förbi till nästa frame som om ingenting hade hänt :q Då jag kör lokalt så kanske processen
är så pass snabb att Flashen helt enkelt hinner få tag i texten?..
Detta är som sagt ett mysterium!
Således; Är det någon som vet hur man kan få Flash att "vänta" på svaret från rettext.aspx?
Antagligen är det som du misstänker, att det tar lite tid innan värdena uppdateras.
En sak du kan göra är att kontenuerligt uppdatera ditt textfält via onEnterFrame eller setInterval.
Det jag föreslår dock, är att inte använda loadVariables eller loadVariablesNum överhuvudtaget. Det är gamla funktioner som är påväg ut. De ger heller inte speciellt stora möjligheter när det kommer till att känna av olika händelser.
Titta istället på loadVars. Nedan följer ett exempel på hur det kan användas:
var myLv:LoadVars = new LoadVars();
myLv.onLoad = function ( success:Boolean )
{
if ( success )
{
trace ( this.toString() );
}
else
{
trace ( "Error" );
}
};
myLv.load( "http://www.somedomain.com/somefile.aspx" );
Notera att det finns många fler händelser / metoder / egenskaper i LoadVars klassen du kan dra nytta av.
Tack så mycket för ditt svar! Nu fungerar det betydligt bättre :bire
Nästa problem som jag har stött på är att textrutan i Flash blinkar till
efter att jag "loopar" laddningen från textfilen.
Jag vet inte om jag gör detta på rätt sett, du skriver att jag kan köra med
"onEnterFrame eller setInterval". Frågan är bara hur jag gör det? (jag är riktig n00b på Flash :r )
Det jag gör nu för att uppdatera textrutan är följande:
På Frame 1 har jag din kod:
var myLv:LoadVars = new LoadVars();
myLv.onLoad = function ( success:Boolean )
{
if ( success )
{
txtMain.htmlText=this.text;
txtMain.scroll=txtMain.length; //scrolla automatiskt till botten
}
};
myLv.load( "rettext.aspx?mrnd="+random(100000) );
Sedan på Frame 15 har jag:
gotoAndPlay(1);
Jag antar att man kan använda dina "onEnterFrame eller setInterval" i stället.
Vore toppen om du kan ge ett exempel på det också :)
var oLen = new Number;
function LoadAll () {
var myLv:LoadVars = new LoadVars();
myLv.onLoad = function ( success:Boolean )
{
if ( success )
{
if (length(this.text) > oLen) {
oLen = length(this.text);
txtMain.htmlText=this.text;
txtMain.scroll=txtMain.length;
}
}
};
myLv.load( "rettext.aspx?mrnd="+random(1000000) );
}
timer = setInterval(LoadAll, 1000);