Paket | flash.net |
Klass | public class SharedObject |
Arv | SharedObject EventDispatcher Object |
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Använd delade objekt för att göra följande:
-
Bibehålla lokal beständighet. Det här är det enklaste sättet att använda ett delat objekt på och Flash Media Server behövs inte. Du kan till exempel anropa
SharedObject.getLocal()
och skapa ett delat objekt i ett program (t.ex. en räknare med minne). När användaren stänger räknaren sparas det senaste värdet i ett delat objekt på användarens dator. Nästa gång som räknaren körs används värdena från tidigare körning. Du kan också ange det delade objektets egenskaper mednull
innan räknaren stängs. Då öppnas den vid nästa körning utan att behöva några värden. Ett annat exempel på bibehållen lokal beständighet är uppföljning av användarinställningar eller andra data för komplexa webbsidor, t.ex. registrering av vilka artiklar användare läser på en nyhetswebbsida. Spårning av sådan information gör att du kan visa artiklar som redan har lästs på annat sätt än nya, olästa artiklar. Om informationen sparas på användarens dator minskar belastningen på servern. -
Lagra och dela data på Flash Media Server. Ett delat objekt kan lagra data på servern. Dessa data kan sedan hämtas av andra klienter. Du kan till exempel anropa
SharedObject.getRemote()
för att skapa ett externt delat objekt (till exempel en telefonlista) som är beständigt på servern. Varje gång en klient ändrar i det delade objektet blir de ändrade värdena tillgängliga för alla klienter som är anslutna till objektet eller som ansluter till det senare. Om objektet även är beständigt lokalt och en klient ändrar data utan at vara ansluten till servern, kopieras data till det externa delade objektet nästa gång klienten ansluter till objektet. - Dela data i realtid. Med ett delat objekt kan datadelning användas över flera klienter i realtid. Du kan till exempel öppna ett externt delat objekt med en lista med användare i ett chattrum som är synligt för alla klienter med anslutning till objektet. När en användare träder in eller lämnar chattrummet uppdateras objektet och alla klienter som är anslutna till objektet ser den uppdaterade listan med användare i chattrummet.
Om du vill skapa ett lokalt delat objekt anropar du SharedObject.getLocal()
. Om du vill skapa ett externt delat objekt anropar du SharedObject.getRemote()
.
När ett program stängs sparas delade objekt med flush eller skrivs på en disk. Du kan också anropa metoden flush()
för att explicit skriva data till en disk.
Att tänka på om utrymme på den lokala disken: Lokala delade objekt har några viktiga begränsningar man ska komma ihåg när man utvecklar program med dem. Ibland får SWF-filerna inte skriva lokala delade objekt och ibland kan data som sparas i lokala delade objekt tas bort utan att du märker det. Flash Player-användarna kan begränsa diskutrymmet som är tillgängligt för enskilda domäner eller alla domäner. Om användaren minskar mängden tillgängligt utrymme kan lokala delade objekt tas bort. Flash Player-användare kan också ställa in sekretesskontroller som förhindrar att utomstående domäner (andra domäner än domänen som anges i webbläsarens adressfält) läser eller skriver i lokala delade objekt. Notera även att på Mac OS, från och med AIR 3.3, ändrades platsen för lokalt delade objekt så om du uppgraderar till 3.3-namnutrymmet kommer det att verka som om objekten har tagits bort.
Obs: SWF-filer som sparas och körs på en lokal dator och inte från en server kan alltid skriva tredje parts delade objekt på disken. Mer information om tredje parts delade objekt finns på panelen Globala lagringsinställningar i hjälpen för Flash Player.
Adobe rekommenderar att du kontrollerar om det uppstår fel som beror på det tillgängliga diskutrymmet och på användarens sekretessinställningar. Gör kontrollen när du anropar getLocal()
och flush()
:
-
SharedObject.getLocal()
– Flash Player genererar ett undantag när ett anrop till metoden misslyckas, som till exempel när användaren har inaktiverade delade objekt från tredje part och SWF-filens domän inte matchar domänen i webbläsarens adressfält. -
SharedObject.flush()
– Flash Player genererar ett undantag när ett anrop till den här metoden misslyckas. Den returnerarSharedObjectFlushStatus.FLUSHED
när metoden slutförs. Den returnerarSharedObjectFlushStatus.PENDING
när ytterligare minnesutrymme krävs. Flash Player uppmanar användaren att öka minnesutrymmet för data som sparas lokalt. Därefter skickas händelsennetStatus
med ett informationsobjekt som anger om flush-metoden misslyckades eller slutfördes.
Om SWF-filen försöker skapa eller ändra lokala delade objekt ska den vara minst 215 pixlar bred och 138 pixlar hög (det är de mått som krävs för att en dialogruta som uppmanar användaren att öka lagringsgränsen för lokala delade objekt ska kunna visas). Om SWF-filen är mindre än dessa mått och det behövs en ökning av lagringsgränsen misslyckas SharedObject.flush()
, SharedObjectFlushedStatus.PENDING
returneras och händelsen netStatus
skickas.
Externa delade objekt. Med Flash Media Server kan du skapa och använda externa delade objekt som delas i realtid av alla klienter som är anslutna till programmet. När en klient ändrar en egenskap i ett externt delat objekt ändras egenskapen för alla anslutna klienter. Du kan använda externa delade objekt för att synkronisera klienter, till exempel användare i ett spel för flera spelare.
Varje externt delat objekt har en data
-egenskap som är ett objekt med egenskaper som lagrar data. Anropa setProperty()
när du vill ändra en egenskap i dataobjektet. Servern uppdaterar egenskaperna, skickar en sync
-händelse och skickar tillbaka egenskaperna till de anslutna klienterna.
Du kan välja att göra externa delade objekt beständiga på klienten, på servern eller både och. Som standard sparar Flash Player lokalt beständiga externa delade objekt som är upp till 100 kB stora. När du försöker spara ett större objekt visar Flash Player dialogrutan Lokala lagringsinställningar så att användaren kan tillåta eller neka lokal lagring för det delade objektet. Se till att scenen är minst 215 x 138 pixlar. Det är den minsta storleken som Flash kan visa dialogrutan i.
Om användaren väljer Tillåt sparar servern det delade objektet och skickar en netStatus
-händelse med code
-egenskapen SharedObject.Flush.Success
. Om användaren väljer Neka sparar servern inte det delade objektet och skickar en netStatus
-händelse med code
-egenskapen SharedObject.Flush.Failed
.
Relaterade API-element
Egenskap | Definieras med | ||
---|---|---|---|
client : Object
Anger objektet som återkopplingsmetoder anropas i. | SharedObject | ||
constructor : Object
En referens till klassobjektet eller konstruktorfunktionen för en given objektinstans. | Object | ||
data : Object [skrivskyddad]
Attributen som är tilldelade till egenskapen data för objektet. Dessa attribut kan delas och sparas. | SharedObject | ||
defaultObjectEncoding : uint [statisk]
Standardobjektkodningen (AMF-version) för alla lokala delade objekt som skapats i SWF-filen. | SharedObject | ||
fps : Number [lässkyddad]
Anger hur många gånger per sekund som en klients ändringar i ett delat objekt skickas till servern. | SharedObject | ||
objectEncoding : uint
Objektkodningen (AMF-version) för det här delade objektet. | SharedObject | ||
preventBackup : Boolean [statisk]
Anger huruvida lokala delade objekt ska säkerhetskopieras med säkerhetskopieringstjänsten i iOS-molnet. | SharedObject | ||
size : uint [skrivskyddad]
Det delade objektets aktuella storlek i byte. | SharedObject |
Metod | Definieras med | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registrerar ett händelseavlyssnarobjekt för ett EventDispatcher-objekt så att avlyssnaren får meddelanden om händelser. | EventDispatcher | ||
Tar bort alla data och det delade objektet från disken för lokala delade objekt. | SharedObject | ||
Stänger anslutningen mellan ett delat objekt och servern. | SharedObject | ||
Ansluter till ett delat objekt på servern via ett angivet NetConnection-objekt. | SharedObject | ||
Skickar en händelse till händelseflödet. | EventDispatcher | ||
Skriver omedelbart ett lokalt beständigt delat objekt i en lokal fil. | SharedObject | ||
[statisk]
Returnerar en referens till ett lokalt beständigt delat objekt som bara är tillgängligt för den nuvarande klienten. | SharedObject | ||
getRemote(name:String, remotePath:String = null, persistence:Object = false, secure:Boolean = false):SharedObject [statisk]
Returnerar en referens till ett delat objekt på Flash Media Server som flera klienter har åtkomst till. | SharedObject | ||
Kontrollerar om EventDispatcher-objektet har några avlyssnare registrerade för en viss typ av händelse. | EventDispatcher | ||
Anger om det finns en egenskap angiven för ett objekt. | Object | ||
Anger om en instans av klassen Object finns i prototypkedjan för objektet som anges som parameter. | Object | ||
Anger om den angivna egenskapen finns och är uppräkningsbar. | Object | ||
Tar bort en avlyssnare från EventDispatcher-objektet. | EventDispatcher | ||
Sänder ett meddelande till alla klienter som är anslutna till det delade objektet, inklusive klienten som skickade meddelandet. | SharedObject | ||
Anger för servern att värdet för en egenskap i det delade objektet har ändrats. | SharedObject | ||
Uppdaterar värdet för en egenskap i ett delat objekt och anger för servern att egenskapens värde har ändrats. | SharedObject | ||
Anger tillgänglighet för en dynamisk egenskap för slingåtgärder. | Object | ||
Returnerar det här objektets strängrepresentation, formaterad i enlighet med språkspecifika konventioner. | Object | ||
Returnerar det angivna objektets strängbeteckning. | Object | ||
Returnerar det angivna objektets primitiva värde. | Object | ||
Kontrollerar om en händelseavlyssnare är registrerad för det här EventDispatcher-objektet eller något av dess överordnade objekt för den angivna händelsetypen. | EventDispatcher |
Händelse | Sammanfattning | Definieras med | ||
---|---|---|---|---|
[utsändningshändelse] Skickas när Flash Player eller AIR får operativsystemfokus och blir aktivt. | EventDispatcher | |||
Skickas om ett undantag inträffar asynkront, d.v.s. från ursprunglig asynkron kod. | SharedObject | |||
[utsändningshändelse] Skickas när Flash Player eller AIR förlorar operativsystemfokus och blir inaktivt. | EventDispatcher | |||
Skickas om SharedObject-instansen ger en status- eller felrapport. | SharedObject | |||
Skickas när ett externt delat objekt har uppdaterats av servern. | SharedObject |
client | egenskap |
client:Object
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Anger objektet som återkopplingsmetoder anropas i. Standardobjektet är this
. Du kan tilldela klientegenskapen till ett annat objekt så kommer återkopplingsmetoder att anropas i det objektet.
Implementering
public function get client():Object
public function set client(value:Object):void
Utlöser
TypeError — Egenskapen client måste vara angiven som ett icke-nullobjekt.
|
data | egenskap |
data:Object
[skrivskyddad] Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Attributen som är tilldelade till egenskapen data
för objektet. Dessa attribut kan delas och sparas. Varje attribut kan vara ett objekt av valfri ActionScript- eller JavaScript-typ: Array, Number, Boolean, ByteArray, XML och så vidare. Följande rader tilldelar till exempel värden till olika aspekter av ett delat objekt:
var items_array:Array = new Array(101, 346, 483); var currentUserIsAdmin:Boolean = true; var currentUserName:String = "Ramona"; var my_so:SharedObject = SharedObject.getLocal("superfoo"); my_so.data.itemNumbers = items_array; my_so.data.adminPrivileges = currentUserIsAdmin; my_so.data.userName = currentUserName; for (var prop in my_so.data) { trace(prop+": "+my_so.data[prop]); }
Alla attribut i egenskapen data
i ett delat objekt sparas om objektet är beständigt och innehåller följande information:
userName: Ramona adminPrivileges: true itemNumbers: 101,346,483
Obs! Tilldela inte värden direkt till egenskapen data
i ett delat objekt (till exempel so.data = someValue
). Flash Player ignorerar sådana tilldelningar.
Om du vill ta bort attribut för lokala delade objekt använder du kod som delete so.data.attributeName
. Om ett attribut anges som null
eller undefined
för ett lokalt delat objekt tas attributet inte bort.
Om du vill skapa privata värden för ett delat objekt – det vill säga värden som bara är tillgängliga för den klientinstansen medan objektet används och som inte sparas när den stängs – skapar du egenskaper som inte har namnet data
att spara dem i. Se följande exempel:
var my_so:SharedObject = SharedObject.getLocal("superfoo"); my_so.favoriteColor = "blue"; my_so.favoriteNightClub = "The Bluenote Tavern"; my_so.favoriteSong = "My World is Blue"; for (var prop in my_so) { trace(prop+": "+my_so[prop]); }
Det delade objektet innehåller följande data:
favoriteSong: My World is Blue favoriteNightClub: The Bluenote Tavern favoriteColor: blue data: [object Object]
För externa delade objekt som används med en server är alla attribut i egenskapen data
tillgängliga för alla klienter som är anslutna till det delade objektet och alla attribut sparas om objektet är beständigt. Om en klient ändrar värdet för ett attribut ser alla klienter det nya värdet.
Implementering
public function get data():Object
Relaterade API-element
defaultObjectEncoding | egenskap |
defaultObjectEncoding:uint
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Standardobjektkodningen (AMF-version) för alla lokala delade objekt som skapats i SWF-filen. När lokala delade objekt skrivs till disken anger egenskapen SharedObject.defaultObjectEncoding
vilken AMF-version som ska användas: formatet ActionScript 3.0 (AMF3) eller formatet ActionScript 1.0 eller 2.0 (AMF0).
Mer information om objektkodning, inklusive skillnaden mellan kodning i lokala och externa delade objekt, finns i beskrivningen för egenskapen objectEncoding
.
Med standardvärdet för SharedObject.defaultObjectEncoding
används formatet ActionScript 3.0 (AMF3). Om du behöver skriva lokala delade objekt som kan läsas av SWF-filer i ActionScript 2.0 eller 1.0 anger du att SharedObject.defaultObjectEncoding
ska använda motsvarande format flash.net.ObjectEncoding.AMF0
i början av skriptet, innan du skapar några lokala delade objekt. Alla lokala delade objekt som skapas efter detta kommer att använda AMF0-kodning och kan användas med äldre innehåll. När de lokala delade objekten har skapats kan du inte ändra värdet objectEncoding
för dessa objekt genom inställning av SharedObject.defaultObjectEncoding
.
Om du vill ange objektkodning per objekt, istället för alla delade objekt som skapas av SWF-filen, anger du egenskapen objectEncoding
för det lokala delade objektet.
Implementering
public static function get defaultObjectEncoding():uint
public static function set defaultObjectEncoding(value:uint):void
Relaterade API-element
fps | egenskap |
fps:Number
[lässkyddad] Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Anger hur många gånger per sekund som en klients ändringar i ett delat objekt skickas till servern.
Använd den här metoden när du vill kontrollera trafiken mellan klienten och servern. Om t.ex. anslutningen mellan klienten och servern är relativt långsam kanske du vill ange fps
med ett lågt värde. Och omvänt gäller om klienten är ansluten till ett fleranvändarprogram där timing är viktigt och då kanske du vill ange fps
med ett högt värde.
När en inställning av fps
görs kommer händelsen sync
att triggas och alla ändringar uppdateras på servern. Om du endast vill uppdatera servern manuellt anger du fps
med 0.
Ändringar skickas inte till servern förrän händelsen sync
har skickats. Detta innebär att om svarstiden från servern är långsam kan uppdateringar inte skickas så ofta som egenskapens värde anger.
Implementering
public function set fps(value:Number):void
objectEncoding | egenskap |
objectEncoding:uint
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Objektkodningen (AMF-version) för det här delade objektet. När ett lokalt delat objekt skrivs till disken anger egenskapen objectEncoding
vilken AMF-version som ska användas: formatet ActionScript 3.0 (AMF3) eller formatet ActionScript 1.0 eller 2.0 (AMF0).
Objektkodningen hanteras olika beroende på om det delade objektet är lokalt eller externt.
- Local shared objects. Du kan hämta eller ange värdet för egenskapen
objectEncoding
för lokala delade objekt. Värdet förobjectEncoding
påverkar vilken formatering som används vid writing av det lokala delade objektet. Om det lokala delade objektet måste vara läsbart av SWF-filer i ActionScript 2.0 eller 1.0 anger duobjectEncoding
medObjectEncoding.AMF0
. Även om objektkodningen är inställd att skriva i AMF3-format kan Flash Player läsa lokala delade objekt i AMF0-format. Detta innebär att om du använder standardvärdet för den här egenskapen,ObjectEncoding.AMF3
, kan SWF-filen ändå läsa delade objekt som skapats av SWF-filer i ActionScript 2.0 eller 1.0. - Remote shared objects. Vid anslutning till servern ärver ett externt delat objekt
objectEncoding
-inställningen från den associerade NetConnection-instansen (den instans som används vid anslutningen till det externa delade objektet). När det inte finns någon anslutning till servern ärver ett externt delat objektdefaultObjectEncoding
-inställningen från den associerade NetConnection-instansen. Eftersom värdet för egenskapenobjectEncoding
i ett externt delat objekt avgörs av NetConnection-instansen är denna egenskap skrivskyddad för externa delade objekt.
Implementering
public function get objectEncoding():uint
public function set objectEncoding(value:uint):void
Utlöser
ReferenceError — Du försökte ange värdet för egenskapen objectEncoding på ett externt delat objekt. Den här egenskapen är skrivskyddad för externa delade objekt, eftersom dess värde avgörs av den associerade NetConnection-instansen.
|
Relaterade API-element
preventBackup | egenskap |
preventBackup:Boolean
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 3.7 |
Anger huruvida lokala delade objekt ska säkerhetskopieras med säkerhetskopieringstjänsten i iOS-molnet.
Ange true eller false:
- true - Förhindrar att alla lokalt delade objekt säkerhetskopieras med säkerhetskopieringstjänsten i iOS-molnet.
- false (standard) - Lokala delade objekt kommer att säkerhetskopieras med säkerhetskopieringstjänsten i iOS-molnet
Den här egenskapen gäller bara för lokalt delade objekt och gäller endast för iOS.
Implementering
public static function get preventBackup():Boolean
public static function set preventBackup(value:Boolean):void
size | egenskap |
size:uint
[skrivskyddad] Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Det delade objektets aktuella storlek i byte.
Flash beräknar ett delat objekts storlek genom att gå igenom alla dess dataegenskaper. Ju fler dataegenskaper objektet har, desto längre tid tar det att uppskatta storleken. Att uppskatta objektstorlek kan ta lång tid. Undvik därför att använda den här metoden om du inte måste.
Implementering
public function get size():uint
Exempel ( Så här använder du exemplet )
"thehobbit"
. Egenskapen username
läggs till i dataegenskapen för SharedObject-objektet. Därefter spåras egenskapen size
som returnerar angivet värde.
import flash.net.SharedObject; // if these get copied or not var mySo:SharedObject = SharedObject.getLocal("thehobbit"); mySo.data.username = "bilbobaggins"; trace(mySo.size); // 55
clear | () | metod |
public function clear():void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Tar bort alla data och det delade objektet från disken för lokala delade objekt. Referensen till det delade objektet är fortfarande aktivt, men alla dataegenskaper tas bort.
För externa delade objekt som används med Flash Media Server kopplar clear()
bort objektet och tar bort alla data. Om det delade objektet är lokalt beständigt tar motoden också bort det från disken. Referensen till det delade objektet är fortfarande aktivt, men alla dataegenskaper tas bort.
Exempel ( Så här använder du exemplet )
hostName
. Egenskapen username
läggs till i dataegenskapen för SharedObject-objektet. Slutligen anropas metoden clear()
som rensar alla data som har lagts till i dataobjektet (i detta fall en enstaka egenskap som heter username
).
package { import flash.net.SharedObject; public class SharedObject_clear { private var hostName:String = "yourDomain"; private var username:String = "yourUsername"; public function SharedObject_clear() { var mySo:SharedObject = SharedObject.getLocal(hostName); if(mySo.data.username == null) { mySo.data.username = username; trace("set: " + mySo.data.username); // yourUsername } else { mySo.clear(); trace("cleared: " + mySo.data.username); // undefined } } } }
close | () | metod |
public function close():void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Stänger anslutningen mellan ett delat objekt och servern. Om ett externt delat objekt är lokalt beständigt kan användaren göra ändringar i den lokala kopian av objektet efter att den här metoden har anropats. Eventuella ändringar som har gjorts i det lokala objektet skickas till servern nästa gång som användaren ansluter till det externa delade objektet.
connect | () | metod |
public function connect(myConnection:NetConnection, params:String = null):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Ansluter till ett delat objekt på servern via ett angivet NetConnection-objekt. Använd den här metoden efter att du har anropat getRemote()
. När en anslutning har upprättats skickas händelsen sync
.
Innan du försöker arbeta med ett externt delat objekt ska du söka efter eventuella fel med en try..catch..finally
-sats. Avlyssna och hantera sedan händelsen sync
innan du gör ändringar i det delade objektet. Ändringar som görs lokalt – innan händelsen sync
skickas – kan försvinna.
Anropa metoden connect()
för att ansluta till ett externt delat objekt, till exempel:
var myRemoteSO:SharedObject = SharedObject.getRemote("mo", myNC.uri, false); myRemoteSO.connect(myNC);
Parametrar
myConnection:NetConnection — Ett NetConnection-objekt som används med RTMP (Real-Time Messaging Protocol), t.ex ett som används vid kommunikation med Flash Media Server.
| |
params:String (default = null ) — En sträng som definierar ett meddelande som ska skickas till det externa delade objektet på servern. Kan inte användas med Flash Media Server
|
Utlöser
Error — Flash Player kunde inte ansluta till angivet externt delat objekt. Kontrollera att NetConnection-instansen är giltig och ansluten samt att det externa delade objektet har skapats på servern.
|
Relaterade API-element
flush | () | metod |
public function flush(minDiskSpace:int = 0):String
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Skriver omedelbart ett lokalt beständigt delat objekt i en lokal fil. Om du inte använder den här metoden skriver Flash Player det delade objektet på en fil när det delade objektets session tar slut, det vill säga när SWF-filen stängs och det delade objektet skräpsamlas eftersom det inte längre finns några referenser till det, eller när du anropar SharedObject.clear()
eller SharedObject.close()
.
Om metoden returnerar SharedObjectFlushStatus.PENDING
visas en dialogruta där användaren uppmanas att öka mängden tillgängligt utrymme för objekt från den här domänen. Om du vill att utrymmet för det delade objektet ska utökas när det sparas igen så att returvärdet PENDING
kan undvikas, kan du ange ett värde för minDiskSpace
. När Flash Player försöker skriva till filen används det antal byte som angetts för minDiskSpace
i stället för att Flash Player söker efter tillräckligt utrymme för att spara det delade objektet med dess nuvarande storlek.
Om du förväntar dig att det delade objektet växer upp till 500 byte trots att det är mycket mindre från början, anger du 500 för minDiskSpace
. Om användaren uppmanas att tilldela diskutrymme för det delade objektet efterfrågas 500 byte. När användaren har tilldelat det minnesutrymme som behövs behöver inte Flash efterfråga mer utrymme när objektet sparas igen (förutsatt att storleken inte överskrider 500 byte).
När användaren har svarat i dialogrutan anropas metoden igen. En netStatus
-händelse skickas med code
-egenskapen SharedObject.Flush.Success
eller SharedObject.Flush.Failed
.
Parametrar
minDiskSpace:int (default = 0 ) — Minsta diskutrymmet, i byte, som måste finnas tillgängligt för detta objekt.
|
String — Något av följande värden:
|
Utlöser
Error — Flash Player kan inte skriva det delade objektet till diskenheten. Detta fel kan uppstå om användaren har gjort en permanent inställning som inte tillåter lokal datalagring för objekt från denna domän.
Obs! Lokalt innehåll kan alltid skriva delade objekt från utomstående domäner (andra domäner än den som är i webbläsarens adressfält), även om delade objekt inte får skrivas på disken av utomstående domäner. |
Relaterade API-element
Exempel ( Så här använder du exemplet )
hostName
. Egenskapen username
läggs till i dataegenskapen för SharedObject-objektet. Därefter anropas metoden flush()
följt av en kontroll av att strängen pending
eller booleska värdet true
eller false
returnerades. Du bör vara medveten om att alla öppna SharedObject-instanser rensas automatiskt om den aktuella instansen av Flash Player stängs.
package { import flash.net.SharedObject; public class SharedObject_flush { private var hostName:String = "yourDomain"; private var username:String = "yourUsername"; public function SharedObject_flush() { var mySo:SharedObject = SharedObject.getLocal(hostName); mySo.data.username = username; var flushResult:Object = mySo.flush(); trace("flushResult: " + flushResult); trace(mySo.data.username); // yourUsername } } }
getLocal | () | metod |
public static function getLocal(name:String, localPath:String = null, secure:Boolean = false):SharedObject
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Returnerar en referens till ett lokalt beständigt delat objekt som bara är tillgängligt för den nuvarande klienten. Om det delade objektet inte redan finns skapar metoden ett. Om några värden som skickades till getLocal()
är ogiltiga eller om anropet misslyckas genereras ett undantag i Flash Player.
I följande kod visas hur du tilldelar returnerat referensvärde för delat objekt till en variabel:
var so:SharedObject = SharedObject.getLocal("savedData");
Obs! Om användaren har valt att aldrig tillåta lokal lagring för den här domänen sparas inte objektet lokalt, även om ett värde anges för localPath
. Undantaget från regeln är lokalt innehåll. Lokalt innehåll kan alltid skriva delade objekt från utomstående domäner (andra domäner än den som är i webbläsarens adressfält), även om delade objekt inte får skrivas på disken av utomstående domäner.
Namnkonflikter undviks genom att Flash undersöker den plats där SWF-filen som skapar det delade objektet finns. Om en SWF-fil på www.myCompany.com/apps/stockwatcher.swf skapar ett delat objekt med namnet portfolio
är det delade objektet inte i konflikt med ett annat objekt som heter portfolio
som skapats av en SWF-fil på www.yourCompany.com/photoshoot.swf eftersom SWF-filerna kommer från olika kataloger.
Parametern localPath
är valfri, men det kan vara bra att använda den, särskilt om andra SWF-filer behöver få tillgång till det delade objektet. Om data i det delade objektet är specifika för en SWF-fil som inte kommer att flyttas till någon annan plats går det bra att använda standardvärdet. Om andra SWF-filer behöver få tillgång till det delade objektet eller om SWF-filen som skapar det delade objektet kommer att flyttas senare, påverkar parameterns värde åtkomsten till det delade objektet. Om du till exempel skapar ett delat objekt där localPath
ställts in på standardvärdet, som är den fullständiga sökvägen till SWF-filen, får inga andra SWF-filer tillgång till det delade objektet. Om du senare flyttar den ursprungliga SWF-filen till en annan plats har inte ens den SWF-filen tillgång till data som redan sparats i det delade objektet.
Använd parametern localpath
för att undvika begränsa åtkomst till ett delat objekt av misstag. Den friaste inställningen är att ställa in parametern localPath
på /
. Då är det delade objektet tillgängligt för alla SWF-filer i domänen, men risken för namnkonflikter med andra delade objekt i domänen ökar. En mer begränsad inställning är att lägga till mappnamnen som ingår i hela SWF-filens sökväg i localPath
. För till exempel det delade objektet portfolio
som skapats av SWF-filen på www.myCompany.com/apps/stockwatcher.swf, kan du ange parametern localPath
med /
, /apps
eller /apps/stockwatcher.swf
. Du måste avgöra vilket alternativ som ger bäst flexibilitet för programmet.
Överväg följande säkerhetsmodell när du använder den här metoden:
- Det går inte att använda delade objekt över sandlådegränser.
- Användare kan begränsa åtkomst till delade objekt i dialogrutan Inställningar i Flash Player eller med Inställningshanteraren. Med standardinställningen kan ett program skapa delade objekt på upp till 100 kB per domän. Administratörer och användare kan också ange egna gränser för hur mycket som får skrivas i filsystemet.
Anta att du ska publicera SWF-filinnehåll för lokal uppspelning (antingen lokala SWF-filer eller EXE-filer) och att du behöver åtkomst till ett specifikt delat objekt från mer än en lokal SWF-fil. Då bör du tänka på att med lokala filer kan två olika platser användas vid lagring av delade objekt. Vilken domän som används beror på vilken säkerhetsbehörighet den lokala filen som skapade det delade objektet har. Lokala filer kan ha tre olika behörighetsnivåer:
- Åtkomst endast till det lokala filsystemet.
- Åtkomst enbart till nätverket.
- Åtkomst till både nätverket och det lokala filsystemet.
Lokala filer med åtkomst till det lokala filsystemet (nivå 1 eller 3) sparar sina delade objekt på en plats. Lokala filer utan åtkomst till det lokala filsystemet (nivå 2) sparar sina delade objekt på en annan plats.
Du kan förhindra att metoden används av en SWF-fil genom att ställa in parametern allowNetworking
i object
- och embed
-taggarna på den HTML-sida där SWF-innehållet finns.
Mer information finns i avsnittet Security på Flash Player Developer Center.
Parametrar
name:String — Objektets namn. Namnet kan innehålla snedstreck (/ ); work/addresses är till exempel ett giltigt namn. Blanksteg får inte användas i ett delat objekts namn. Det får inte heller följande tecken:
~ % & \ ; : " ' , < > ? # | |
localPath:String (default = null ) — Den fullständiga eller delvisa sökvägen till SWF-filen som skapade det delade objektet och som avgör var objektet ska sparas lokalt. Om du inte anger den här parametern används hela sökvägen.
| |
secure:Boolean (default = false ) — Avgör om åtkomst till detta delade objekt är begränsat till SWF-filer som levereras över en HTTPS-anslutning. Om SWF-filen levereras via HTTPS ger detta parametervärde följande effekter:
Om SWF-filen levereras över en anslutning utan HTTPS och du försöker ange parametern med I följande diagram visas hur parametern |
SharedObject — En referens till ett delat objekt som är lokalt beständigt och bara är tillgängligt för den nuvarande klienten. Om Flash Player inte kan skapa eller hitta det delade objektet (om t.ex. localPath har angetts, men katalogen saknas) orsakar metoden ett undantag.
|
Utlöser
Error — Flash Player kan inte skapa det delade objektet av någon anledning. Felet kan uppstå om det inte är tillåtet för Flash-innehåll från tredje part att skapa och spara beständiga delade objekt (gäller inte lokalt innehåll). Användare kan neka att utomstående sparar delade objekt på panelen Globala lagringsinställningar i Inställningshanteraren på http://www.adobe.com/support/documentation/se/flashplayer/help/settings_manager03.html.
|
getRemote | () | metod |
public static function getRemote(name:String, remotePath:String = null, persistence:Object = false, secure:Boolean = false):SharedObject
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Returnerar en referens till ett delat objekt på Flash Media Server som flera klienter har åtkomst till. Om det externa delade objektet inte redan finns skapar metoden ett.
Om du vill skapa ett externt delat objekt anropar du getRemote()
och sedan connect()
för att ansluta det externa delade objektet till servern, liksom i följande:
var nc:NetConnection = new NetConnection(); nc.connect("rtmp://somedomain.com/applicationName"); var myRemoteSO:SharedObject = SharedObject.getRemote("mo", nc.uri, false); myRemoteSO.connect(nc);
Bekräfta att lokala och externa kopior av det delade objektet är synkroniserade genom att avlyssna och hantera händelsen sync
. Alla klienter som vill dela detta objekt måste skicka samma värden för parametrarna name
och remotePath
.
För att skapa ett delat objekt som är tillgängligt endast för aktuell klient använder du SharedObject.getLocal()
.
Parametrar
name:String — Det externa delade objektets namn. Namnet kan innehålla snedstreck (/); arbete/adresser är till exempel ett giltigt namn. Blanksteg får inte användas i ett delat objekts namn. Det får inte heller följande tecken:
~ % & \ ; : " ' , > ? ? # | |
remotePath:String (default = null ) — Serverns URI där det delade objektet ska sparas. Denna URI måste vara identisk med NetConnection-objektets URI som skickas till metoden connect() .
| |
persistence:Object (default = false ) — Anger om attributen för det delade objektets dataegenskap är beständiga lokalt, externt eller både och. Med den här parametern kan du även ange var det delade objektet ska sparas lokalt. Följande värden är giltiga:
Obs! Om användaren har valt att aldrig tillåta lokal lagring för den här domänen sparas inte objektet lokalt, även om en lokal sökväg anges för beständighet. Mer information finns i klassbeskrivningen. | |
secure:Boolean (default = false ) — Avgör om åtkomst till detta delade objekt är begränsat till SWF-filer som levereras över en HTTPS-anslutning. Mer information finns i beskrivningen för parametern secure i metodposten getLocal .
|
SharedObject — En referens till ett objekt som kan delas över flera klienter.
|
Utlöser
Error — Flash Player kan inte skapa eller hitta det delade objektet. Detta kan inträffa om obefintliga sökvägar har angetts för parametrarna remotePath och persistence .
|
Relaterade API-element
send | () | metod |
public function send(... arguments):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Sänder ett meddelande till alla klienter som är anslutna till det delade objektet, inklusive klienten som skickade meddelandet. För att fortsätta och åtgärda meddelandet skapar du en callback-funktion som är kopplad till det delade objektet.
Parametrar
... arguments — Ett eller flera argument: En sträng som identifierar meddelandet, namnet på en eller flera hanterarfunktioner som kopplas till det delade objektet samt valfria parametrar av valfri typ. Hanterarnamnet kan endast vara på en nivå (d.v.s. det kan inte ha formatet överordnad/underordnad) och är relativt till det delade objektet. Argumenten är serialiserade och skickas via anslutningen. De tas emot i samma ordning av mottagande hanterare. Om en parameter är ett cirkulärt objekt (t.ex. en länkad lista som är cirkulär) hanteras referenserna korrekt av serialiseraren.
Obs: Använd inte en reserverad term som funktionsnamn. Till exempel så kommer |
setDirty | () | metod |
public function setDirty(propertyName:String):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Anger för servern att värdet för en egenskap i det delade objektet har ändrats. Den här metoden markerar egenskaper som dirty, vilket innebär att de har ändrats.
Anropa SharedObject.setProperty()
om du vill skapa egenskaper för ett delat objekt.
Metoden SharedObject.setProperty()
implementerar setDirty()
. I de flesta fall, som exempelvis när värdet för en egenskap är en primitiv typ som String eller Number, kan du anropa setProperty()
istället för setDirty()
. När värdet för en egenskap är ett objekt som innehåller de egna egenskaperna anropar du däremot setDirty()
för att ange att värdet inom objektet har ändrats.
Parametrar
propertyName:String — Namnet på egenskapen som har ändrats.
|
Relaterade API-element
setProperty | () | metod |
public function setProperty(propertyName:String, value:Object = null):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Uppdaterar värdet för en egenskap i ett delat objekt och anger för servern att egenskapens värde har ändrats. Med metoden setProperty()
markeras explicit egenskaper som ändrade (dirty).
Mer information om externa delade objekt finns i dokumentationen för Flash Media Server.
Obs! Metoden SharedObject.setProperty()
implementerar metoden setDirty()
. I de flesta fall, som exempelvis när värdet för en egenskap är en primitiv typ som String eller Number, använder du setProperty()
istället för setDirty()
. Däremot, när värdet för en egenskap är ett objekt som innehåller de egna egenskaperna, använder du setDirty()
för att ange att värdet inom objektet har ändrats. Det är i allmänhet bättre att anropa setProperty()
istället för setDirty()
, eftersom med setProperty()
uppdateras ett egenskapsvärde endast om värdet har ändrats. Med setDirty()
genomförs synkronisering på alla mottagande klienter.
Parametrar
propertyName:String — Namnet på egenskapen i det delade objektet.
| |
value:Object (default = null ) — Värdet för egenskapen (ett ActionScript-objekt) eller null som tar bort egenskapen.
|
Relaterade API-element
asyncError | Händelse |
flash.events.AsyncErrorEvent
egenskap AsyncErrorEvent.type =
flash.events.AsyncErrorEvent.ASYNC_ERROR
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Skickas om ett undantag inträffar asynkront, d.v.s. från ursprunglig asynkron kod.
KonstantenAsyncErrorEvent.ASYNC_ERROR
definierar värdet för ett asyncError
-händelseobjekts type
-egenskap.
Den här händelsen har följande egenskaper:
Egenskap | Värde |
---|---|
bubbles | false |
cancelable | false ; det finns inget standardbeteende att avbryta. |
currentTarget | Det objekt som aktivt behandlar Event-objektet med en händelseavlyssnare. |
target | Objektet som skickade händelsen. |
error | Felet som utlöste händelsen. |
netStatus | Händelse |
flash.events.NetStatusEvent
egenskap NetStatusEvent.type =
flash.events.NetStatusEvent.NET_STATUS
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Skickas om SharedObject-instansen ger en status- eller felrapport. Händelsen netStatus
innehåller egenskapen info
, vilket är ett informationsobjekt som innehåller specifik information om händelsen, t.ex. om en anslutning lyckades eller om det delade objektet skrevs till den lokala diskenheten.
netStatus
-händelseobjekts type
-egenskap.
Den här händelsen har följande egenskaper:
Egenskap | Värde |
---|---|
bubbles | false |
cancelable | false ; det finns inget standardbeteende att avbryta. |
currentTarget | Det objekt som aktivt behandlar Event-objektet med en händelseavlyssnare. |
info | Ett objekt med egenskaper som beskriver objektets status eller feltillstånd. |
target | NetConnection- eller NetStream-objektet rapporterar status. |
Relaterade API-element
sync | Händelse |
flash.events.SyncEvent
egenskap SyncEvent.type =
flash.events.SyncEvent.SYNC
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Skickas när ett externt delat objekt har uppdaterats av servern.
Definierar värdet för ettsync
-händelseobjekts type
-egenskap.
Den här händelsen har följande egenskaper:
Egenskap | Värde |
---|---|
bubbles | false |
cancelable | false ; det finns inget standardbeteende att avbryta. |
currentTarget | Det objekt som aktivt behandlar Event-objektet med en händelseavlyssnare. |
changeList | En array med egenskaper som beskriver arrayens status. |
target | SharedObject-instansen som har uppdaterats av servern. |
Relaterade API-element
"application-name"
. När användaren klickar på knappen Spara försöker metoden saveValue()
att spara en egenskap med namnet savedValue
till egenskapen data
i objektet SharedObject. Om Flash Player måste begära tillstånd att spara data anropas metoden onFlushStatus()
när användaren ger eller nekar tillstånd. När användaren klickar på knappen Rensa tar metoden clearValue()
bort värdet som sparats i savedValue
. Nästa gång som SWF-filen läses in är värdet som hämtas undefined
.
package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.events.NetStatusEvent; import flash.net.SharedObject; import flash.net.SharedObjectFlushStatus; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFieldType; public class SharedObjectExample extends Sprite { private var mySo:SharedObject; public function SharedObjectExample() { buildUI(); saveBtn.addEventListener(MouseEvent.CLICK, saveValue); clearBtn.addEventListener(MouseEvent.CLICK, clearValue); mySo = SharedObject.getLocal("application-name"); output.appendText("SharedObject loaded...\n"); output.appendText("loaded value: " + mySo.data.savedValue + "\n\n"); } private function saveValue(event:MouseEvent):void { output.appendText("saving value...\n"); mySo.data.savedValue = input.text; var flushStatus:String = null; try { flushStatus = mySo.flush(10000); } catch (error:Error) { output.appendText("Error...Could not write SharedObject to disk\n"); } if (flushStatus != null) { switch (flushStatus) { case SharedObjectFlushStatus.PENDING: output.appendText("Requesting permission to save object...\n"); mySo.addEventListener(NetStatusEvent.NET_STATUS, onFlushStatus); break; case SharedObjectFlushStatus.FLUSHED: output.appendText("Value flushed to disk.\n"); break; } } output.appendText("\n"); } private function clearValue(event:MouseEvent):void { output.appendText("Cleared saved value...Reload SWF and the value should be \"undefined\".\n\n"); delete mySo.data.savedValue; } private function onFlushStatus(event:NetStatusEvent):void { output.appendText("User closed permission dialog...\n"); switch (event.info.code) { case "SharedObject.Flush.Success": output.appendText("User granted permission -- value saved.\n"); break; case "SharedObject.Flush.Failed": output.appendText("User denied permission -- value not saved.\n"); break; } output.appendText("\n"); mySo.removeEventListener(NetStatusEvent.NET_STATUS, onFlushStatus); } // UI elements private var inputLbl:TextField; private var input:TextField; private var output:TextField; private var saveBtn:Sprite; private var clearBtn:Sprite; private function buildUI():void { // input label inputLbl = new TextField(); addChild(inputLbl); inputLbl.x = 10; inputLbl.y = 10; inputLbl.text = "Value to save:"; // input TextField input = new TextField(); addChild(input); input.x = 80; input.y = 10; input.width = 100; input.height = 20; input.border = true; input.background = true; input.type = TextFieldType.INPUT; // output TextField output = new TextField(); addChild(output); output.x = 10; output.y = 35; output.width = 250; output.height = 250; output.multiline = true; output.wordWrap = true; output.border = true; output.background = true; // Save button saveBtn = new Sprite(); addChild(saveBtn); saveBtn.x = 190; saveBtn.y = 10; saveBtn.useHandCursor = true; saveBtn.graphics.lineStyle(1); saveBtn.graphics.beginFill(0xcccccc); saveBtn.graphics.drawRoundRect(0, 0, 30, 20, 5, 5); var saveLbl:TextField = new TextField(); saveBtn.addChild(saveLbl); saveLbl.text = "Save"; saveLbl.selectable = false; // Clear button clearBtn = new Sprite(); addChild(clearBtn); clearBtn.x = 230; clearBtn.y = 10; clearBtn.useHandCursor = true; clearBtn.graphics.lineStyle(1); clearBtn.graphics.beginFill(0xcccccc); clearBtn.graphics.drawRoundRect(0, 0, 30, 20, 5, 5); var clearLbl:TextField = new TextField(); clearBtn.addChild(clearLbl); clearLbl.text = "Clear"; clearLbl.selectable = false; } } }
Tue Jun 12 2018, 01:40 PM Z