Avatar billede purup Nybegynder
18. marts 2005 - 19:37 Der er 6 kommentarer og
1 løsning

sharedobject problem

Følgende code står på 1 frame i min test-flash (som bare har det ene frame). Eneste object i flash'en er en dynamisk tekstbox som hedder output.
Jeg forventede, at første gang flash'en kørte, skulle den skrive data added. De efterfølgende gange flash'en kørte skulle den skrive huraaaa. Den bliver ved med at at skrive data added.
Hvad er der galt?

so = sharedobject.getlocal("epokeHighscore");
if (so.data.msg == undefined) {
      so.data.msg = "huraaaaaaaaaaaaa";
    output.text += "\ndata added";
} else {
    output.text += "\nread: " + so.data.msg;
}
Avatar billede barklund Nybegynder
18. marts 2005 - 22:42 #1
Jeg tror du lige skal flushe dit object, før data bliver skrevet:

so.data.msg = "huraaaaaaaaaaaaa";
so.flush();
Avatar billede purup Nybegynder
19. marts 2005 - 00:47 #2
Efter hvad jeg har læst i help om sharedObjects skulle flash automatisk "flushe" når flash'en afsluttes/lukkes.
Fra help:

SharedObject class
Availability
Flash Player 6.
Description
Shared objects are quite powerful: they offer real-time data sharing between objects that are persistent on the user's computer. You can think of local shared objects as "cookies."
You can use local shared objects to maintain local persistence. This is the simplest way to use a shared object. For example, you can call SharedObject.getLocal() to create a shared object, such as a calculator with memory, in the player. Because the shared object is locally persistent, Flash saves its data attributes on the user's machine when the SWF file ends. The next time the SWF file runs, the calculator contains the values it had when the SWF file ended. Alternatively, if you set the shared object's properties to null before the SWF ends, the calculator opens without any prior values the next time the SWF file runs.

..står der ikke at flash selv gemmer når "...the SWF ends." (treidesidste linie) ? - eller er det mig der misforstår noget?
Avatar billede barklund Nybegynder
19. marts 2005 - 15:42 #3
Jo, det er korrekt. Men ikke desto mindre kan det ofte være fornuftigt at gøre.

Dog kan jeg ikke lige sige, hvorfor dit problem ellers opstår - for hvis jeg kopierer dit script over i en tom film, så virker det fint.

Dog ikke i Flash 7 selvfølgelig, den er jo kapitælaritetsfølsom (case sensitive) og derfor skal du skrive SharedObject.getLocal.

--
Morten Barklund
Avatar billede purup Nybegynder
19. marts 2005 - 17:47 #4
Argh... så var det bare et kæpitalærfølsomhedsproblem!
Men tak for hjælpen. Må jeg endnu en gang opfordre til at lægge et svar?
Og så måske en lille forklaring på, hvorfor det er en god ide at flush'e. Kan man da ikke regne med, at den gør det eller?
Avatar billede barklund Nybegynder
19. marts 2005 - 17:51 #5
Metoden flush() bruges til at teste, om SharedObjects overhovedet er tilgængelige - hvis flush() returnerer false, er der noget galt. Så skyldes det højst sandsynligt, at brugeren i sine indstillinger for Flash plugin'et har slået brugen fra. Så kan man åbne vinduet med indstillingerne så han kan slå det til for det aktuelle website.

Hvis du ikke aktivt bruger flush() og tester resultatet, kan du ikke vide, om data rent faktisk bliver gemt.
Avatar billede purup Nybegynder
19. marts 2005 - 18:19 #6
Det havde jeg ikke tænkt på. Tak for hjælpen
Avatar billede barklund Nybegynder
19. marts 2005 - 23:30 #7
Og tark for points :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester