Toon posts:

[FCS] SharedObject probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben momenteel bezig met een projectgroep meerdere spelletjes te maken met Flash en Flash Communication Server.

Ik kom echter ergens niet uit:

Ik maak een SharedObject aan en in deze SharedObject plaats ik een array. Deze array vul ik met waarden. Mijn code om het SharedObject aan te maken ziet er als volgt uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var soRemote:SharedObject = SharedObject.getRemote("SoQbeConquerer", _parent.oNetConnection.uri, false);

// Hier nog een lege array, maar wordt ergens anders in het script gevuld.
aSquares = new Array();
soRemote.data.aSquares = aSquares;

soRemote.onSync = function(list)
{
}

soRemote.getSquares = function()
{
    trace("functie: getSquares()");
    trace("Array aSquares: " + soRemote.data.aSquares);
}

soRemote.connect(_parent.oNetConnection);


Dit staat in mijn eerste frame van mijn bestand en direct nadat de array (soRemote.data.aSquares) gevuld wordt, roep ik de functie soRemote.getSquares() aan. Deze output netjes de goede resultaten:

code:
1
2
functie: getSquares()
Array aSquares: "info uit mijn array"


Hiernaast heb ik een knop gemaakt om te testen en deze roept dezelfde functie soRemote.getSqaures() aan. Deze keer krijg ik echter niet de gewenste resultaten:

code:
1
2
functie: getSquares()
Array aSquares: undefined


Dit terwijl ik nota bene de zelfde functie aanroep.

Dit zou betekenen dat de data verloren is gegaan. Een oplossing zou zijn het SharedObject persistent te maken, maar dit wil ik niet want het SharedObject moet verwijdert worden als de gebruiker de pagina (iig het swf'je) afsluit.

Ik snap er niks van waarom die data niet wordt bewaard.

Bij voorbaat dank!

Verwijderd

Je moet nog aangeven dat de SharedObject opgeslagen moet worden. Zo uit mijn hoofd is dit de flush () method. Daarnaast wordt een non-persistent object niet verwijdert wanneer de gebruiker de SWF afsluit, maar wanneer je applicatie op de FlashCom server ermee stopt (standaard is dit naar 20 minuten van inactivitiet).

Verwijderd

Topicstarter
Als je een SharedObject flushed dmv. flush() wordt hij opgeslagen in een bestand. Dit zou betekenen dat deze persistent wordt. Wat ik niet wil.

Ten tweede heb ik het hier over een SharedObject die wordt aangemaakt door de client, dus wordt ie wel degelijk verwijdert zodra alle gebruikers die deze SO gebruiken hun SWF afsluiten.

Ik heb mijn probleem al gevonden. Blijkbaar werd mijn SO niet goed gevuld, doordat hij nog niet helemaal goed geconnect was. Ik heb nu een controle ingebouwd in mijn onSync() functie waardoor hij nu prima wertk!

Toch bedankt voor de moeite!

Verwijderd

Volgens mij haal je nu een paar dingen door elkaar. Flash kent twee soorten SharedObjects, namelijk de local- en remoteSharedObject. Local's worden opgeslagen op de client hun computer en kunnen worden gebruikt als cookie. Remote's daarentegen worden opgeslagen op de Flash Communication Server en meerdere mensen kunnen deze aanroepen/gebruiker/whatever.

Je hebt dan weer twee verschillende Remote's, namelijk de persistent en non-persistent remoteSharedObject. Non-persistent objects worden tijdelijk op de server opgeslagen, dit betekent dat wanneer je Flashcom applicatie wordt afgesloten (door inactiviteit/unload) deze worden verwijderd. Persistent objecten blijven op de server staan, ook nadat de applicatie is afgesloten. Het is zelfs zo dat je deze met geen mogelijkheid meer van de server afkrijgt dmv. actionscript. De enige mogelijkheid is om ze met de hand via een FTP programma te verwijderen.