[flash cs3 AS3] No-cache bij laden van extern txt bestand

Pagina: 1
Acties:
  • 1.340 views sinds 30-01-2008
  • Reageer

  • CdRwin
  • Registratie: Juni 2001
  • Laatst online: 27-09-2024
Ik ben sindkort bezig met action scripting van CS3.
Nu probeer ik een extern tekst bestand uitlezen in flash, dit werkt prima (zie script hieronder). Maar als ik de swf in een php pagina zet op mijn test server (bestanden zoals txt en swf staan ook op de server) laad hij de eerste keer de tekst van het txt bestand prima in de flash, maar als ik de tekst aanpas en de browser refresh dan blijft hij de eerste tekst aan houden, dus het is iets van een cache probleem.
Heb al zitten rommelen met "new URLRequestHeader("pragma", "no-cache");" maar krijg het niet echt lekker aan de praat.

Kan iemand mij veder helpen?

ps.
bij AS2.0 kon je "myData.load("test.txt?reload="+Math.round(Math.random()*1000000));" gebruiken. Door de Math functie moest hij telkens reloaden, maar weet niet hij ik deze bij AS3.0 moet aanroepen?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    //Create the URLLOader instance
    var myLoader:URLLoader = new URLLoader()
    var header:URLRequestHeader = new URLRequestHeader("pragma", "no-cache");
    //the data will come as URL-encoded variables
    myLoader.dataFormat = URLLoaderDataFormat.VARIABLES
    //Load using an URLRequest, even beeing local
    myLoader.load(new URLRequest("anastasio.txt"));
    //onLoad handler listener
    myLoader.addEventListener(Event.COMPLETE,onDataLoad);
    //Error handling    
    myLoader.addEventListener(IOErrorEvent.IO_ERROR,onIOError);
    myLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onSecurityError);
    //Could be an error or just a message
    myLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatus)    
    //add a listener for the complete event
    function onDataLoad(evt:Event){
        Title_txt.htmlText = "<b>"+evt.target.data.Title+"</b>"
        Comments_txt.text = evt.target.data.Comments
        var loader:Loader = new Loader()
        holder_mc.addChild(loader)
        loader.load(new URLRequest(evt.target.data.Image))      
    }
    //error callbacks
    function onIOError(evt:IOErrorEvent){
        trace("IOError: "+evt.text)
    }
    function onHTTPStatus(evt:HTTPStatusEvent){
        trace("HTTPStatus: "+evt.status)
    }
    function onSecurityError(evt:SecurityErrorEvent){
        trace("SecurityError: "+evt.text)
    }

[ Voor 5% gewijzigd door CdRwin op 23-01-2008 02:04 ]

www.Qbox.nl


  • HappyChainsaw
  • Registratie: Januari 2002
  • Niet online

HappyChainsaw

It's a trick. Get an axe.

Eigenlijk precies hetzelfde als in AS2 dus, maar dan op zijn AS3's. Bijvoorbeeld:

code:
1
2
3
4
5
6
7
8
9
10
var sXMLPath : String = "url naar file";
var urlLoader:URLLoader=new URLLoader;
var request:URLRequest=new URLRequest;
// lokaal niet met anti-cache mechanisme werken
if (Capabilities.playerType == "StandAlone" || Capabilities.playerType == "External") {
    request.url=sXMLPath;
} else {
    request.url=String(sXMLPath + "?" + Math.random());
}
urlLoader.load(request);

  • Barendm
  • Registratie: Januari 2007
  • Laatst online: 26-08-2023
Math.Random() kan een eerder gebruikte waarde geven.
Door getTimer() te gebruiken zijn alle waarden identiek.