Paketflash.net
Klassepublic class SharedObject
VererbungSharedObject Inheritance EventDispatcher Inheritance Object

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Die SharedObject-Klasse dient zum Lesen und Speichern begrenzter Datenmengen auf dem Computer eines Benutzers oder auf einem Server. Gemeinsame Objekte ermöglichen den Datenaustausch in Echtzeit zwischen mehreren Client-SWF-Dateien und Objekten auf dem lokalen Computer oder einem Remote-Server. Lokale gemeinsame Objekte sind mit Browser-Cookies und gemeinsame Remote-Objekte mit Echtzeit-Datenübertragungsgeräten vergleichbar. Um gemeinsame Remote-Objekte zu verwenden, benötigen Sie Adobe Flash Media Server.

Gemeinsame Objekte können Sie für Folgendes verwenden:

Um ein gemeinsames lokales Objekt zu erstellen, rufen Sie SharedObject.getLocal() auf. Um ein gemeinsames Remote-Objekt zu erstellen, rufen Sie SharedObject.getRemote() auf.

Wenn eine Anwendung geschlossen wird, werden gemeinsame Objekte an eine Festplatte ausgegeben (flush) oder geschrieben. Sie können auch die flush()-Methode aufrufen, um die Daten ausdrücklich auf eine Festplatte zu schreiben.

Lokaler Speicherplatz. Lokale gemeinsame Objekte bringen einige Beschränkungen mit sich, die beim Entwurf einer Anwendung unbedingt zu berücksichtigen sind. Es kann vorkommen, dass die SWF-Dateien nicht zum Schreiben lokaler gemeinsamer Objekte berechtigt sind oder die in lokalen gemeinsamen Objekten gespeicherten Daten ohne Ihr Wissen gelöscht werden. Flash Player-Benutzer haben die Möglichkeit, den Speicherplatz, der einzelnen oder allen Domänen zur Verfügung steht, selbst zu verwalten. Wenn die Benutzer den bereitgestellten Speicherplatz verringern, könnten einige lokale gemeinsame Objekte gelöscht werden. Außerdem stehen Flash Player-Benutzern Sicherheitseinstellungen zur Verfügung, mit denen sie verhindern können, dass Domänen von Dritten (andere Domänen als die in der aktuellen Browser-Adressleiste angezeigte) lokale gemeinsame Objekte lesen oder schreiben.

Hinweis: SWF-Dateien, die auf einem lokalen Computer gespeichert sind und ausgeführt werden, können gemeinsame Objekte von Dritten stets auf Festplatte schreiben. Nähere Informationen zu gemeinsamen Objekten von Dritten finden Sie in der Flash Player-Hilfe unter Global Speichereinstellungen.

Es wird empfohlen, Prüfungen auf Probleme im Zusammenhang mit dem Speicherplatz und den Benutzer-Sicherheitseinstellungen durchzuführen. Nehmen Sie diese Prüfungen vor, wenn Sie getLocal() und flush() aufrufen:

Wenn die SWF-Datei versucht, lokale gemeinsame Objekte zu erstellen oder zu bearbeiten, muss sie mindestens 215 Pixel breit und 138 Pixel hoch sein. Dies sind die Mindestmaße für die Anzeige des Dialogfelds, mit dem der Benutzer aufgefordert wird, den maximalen Speicherplatz für lokale gemeinsame Objekte zu erhöhen. Wenn Ihre SWF-Datei kleiner ist und zusätzlicher Speicherplatz benötigt wird, schlägt SharedObject.flush() fehl, gibt SharedObjectFlushedStatus.PENDING zurück und löst das Ereignis netStatus aus.

Gemeinsame Remote-Objekte: Mit Flash Media Server können Sie gemeinsame Remote-Objekte erstellen und verwenden, die in Echtzeit von allen Clients, die mit Ihrer Anwendung verbunden sind, verwendet werden können. Wenn ein Client eine Eigenschaft eines gemeinsamen Remote-Objekts ändert, wird die Eigenschaft für alle verbundenen Clients geändert. Sie können gemeinsame Remote-Objekte verwenden, um Clients zu synchronisieren, zum Beispiel in einem Spiel mit mehreren Spielern.

Jedes gemeinsame Remote-Objekt verfügt über eine data-Eigenschaft, bei der es sich um ein Objekt mit Eigenschaften handelt, das Daten speichert. Rufen Sie setProperty() auf, um eine Eigenschaft des Data-Objekts zu ändern. Der Server aktualisiert die Eigenschaften, löst ein sync-Ereignis aus und sendet die Eigenschaften zurück an die verbundenen Clients.

Sie können gemeinsame Remote-Objekte auf dem Client, auf dem Server oder auf beiden speichern. Standardmäßig speichert Flash Player gemeinsame Remote-Objekte einer Größe von bis zu 100K lokal. Wenn Sie versuchen, ein größeres Objekt zu speichern, zeigt Flash Player das Dialogfeld für den lokalen Speicher an, in dem der Benutzer die lokale Speicherung des gemeinsamen Objekts zulassen oder ablehnen kann. Achten Sie darauf, dass die Bühnengröße mindestens 215 mal 138 Pixel beträgt. Dies ist die Mindestgröße, die Flash für die Anzeige des Dialogfelds benötigt.

Wählt der Benutzer "Zulassen", speichert der Server das gemeinsame Objekt und löst ein netStatus-Ereignis mit einer code-Eigenschaft von SharedObject.Flush.Success aus. Wählt der Benutzer "Verweigern", speichert der Server das gemeinsame Objekt nicht und löst ein netStatus-Ereignis mit einer code-Eigenschaft von SharedObject.Flush.Failed aus.

Beispiele anzeigen

Siehe auch

flush()
getLocal()
netStatus


Öffentliche Eigenschaften
 EigenschaftDefiniert von
  client : Object
Gibt das Objekt an, bei dem Rückrufmethoden aufgerufen werden.
SharedObject
 Inheritedconstructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz.
Object
  data : Object
[read-only] Die Sammlung von Attributen, die der Eigenschaft "data" des Objekts zugewiesen sind. Diese Attribute können gemeinsam genutzt und gespeichert werden.
SharedObject
  defaultObjectEncoding : uint
[static] Die Standardobjektcodierung (AMF-Version) für alle in der SWF-Datei erstellten lokalen gemeinsamen Objekte.
SharedObject
  fps : Number
[write-only] Gibt an, wie oft pro Sekunde die clientseitigen Änderungen an einem gemeinsamen Objekt an den Server gesendet werden.
SharedObject
  objectEncoding : uint
Die Objektcodierung (AMF-Version) für dieses gemeinsame Objekt.
SharedObject
 Inheritedprototype : Object
[static] Ein Verweis auf das Prototypobjekt einer Klasse oder eines Funktionsobjekts.
Object
  size : uint
[read-only] Ruft die aktuelle Größe des gemeinsamen Objekts in Byte ab.
SharedObject
Öffentliche Methoden
 MethodeDefiniert von
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registriert ein Ereignis-Listener-Objekt bei einem EventDispatcher-Objekt, sodass der Listener über ein Ereignis benachrichtigt wird.
EventDispatcher
  
Lokale gemeinsame Objekte: Entfernt alle Daten und löscht das gemeinsame Objekt von der Festplatte.
SharedObject
  
Schließt die Verbindung zwischen einem gemeinsamen Remote-Objekt und dem Server.
SharedObject
  
connect(myConnection:NetConnection, params:String = null):void
Stellt über ein angegebenes NetConnection-Objekt eine Verbindung zu einem gemeinsamen Remote-Objekt her.
SharedObject
 Inherited
Sendet ein Ereignis in den Ereignisablauf.
EventDispatcher
  
flush(minDiskSpace:int = 0):String
Schreibt ein lokal permanentes gemeinsames Objekt in eine lokale Datei.
SharedObject
  
getLocal(name:String, localPath:String = null, secure:Boolean = false):SharedObject
[static] Gibt einen Verweis auf ein lokal permanentes gemeinsames Objekt zurück, das nur für den aktuellen Client verfügbar ist.
SharedObject
  
getRemote(name:String, remotePath:String = null, persistence:Object = false, secure:Boolean = false):SharedObject
[static] Gibt einen Verweis auf das gemeinsame Objekt auf Flash Media Server zurück, auf das mehrere Clients zugreifen können.
SharedObject
 Inherited
Überprüft, ob das EventDispatcher-Objekt Listener für einen bestimmten Ereignistyp registriert hat.
EventDispatcher
 Inherited
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde.
Object
 Inherited
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde.
Object
 Inherited
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Entfernt einen Listener aus dem EventDispatcher-Objekt.
EventDispatcher
  
send(... arguments):void
Überträgt eine Meldung an alle mit einem gemeinsamen Remote-Objekt verbundenen Clients, einschließlich des Clients, von dem die Meldung gesendet wurde.
SharedObject
  
setDirty(propertyName:String):void
Weist den Server an, dass der Wert einer Eigenschaft im gemeinsamen Objekt geändert wurde.
SharedObject
  
setProperty(propertyName:String, value:Object = null):void
Aktualisiert den Wert einer Eigenschaft in einem gemeinsamen Objekt und informiert den Server, dass der Wert der Eigenschaft geändert wurde.
SharedObject
 Inherited
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest.
Object
 Inherited
Gibt das angegebene Objekt als String zurück.
Object
 Inherited
Gibt den Grundwert des angegebenen Objekts zurück.
Object
 Inherited
Überprüft, ob bei diesem EventDispatcher-Objekt oder bei einem seiner vorangegangenen Elementen ein Ereignis-Listener für einen bestimmten Ereignistyp registriert ist.
EventDispatcher
Ereignisse
 EreignisÜbersicht Definiert von
 Inherited Wird ausgelöst, wenn Flash Player den Betriebssystemfokus erhält und aktiv wird.EventDispatcher
   Wird ausgelöst, wenn eine Ausnahme asynchron ausgelöst wird – das heißt, aus nativem asynchronem Code.SharedObject
 Inherited Wird ausgelöst, wenn Flash Player den Betriebssystemfokus verliert und inaktiv wird.EventDispatcher
   Wird ausgelöst, wenn der Status oder die Fehlerbedingung einer SharedObject-Instanz protokolliert wird.SharedObject
   Wird ausgelöst, wenn ein gemeinsames Remote-Objekt vom Server aktualisiert wurde.SharedObject
Eigenschaftsdetail
clientEigenschaft
client:Object  [read-write]

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Gibt das Objekt an, bei dem Rückrufmethoden aufgerufen werden. Das Standardobjekt ist this. Wenn Sie die client-Eigenschaft auf ein anderes Objekt einstellen, werden die Rückrufmethoden bei dem eingestellten Objekt aufgerufen.


Implementierung
    public function get client():Object
    public function set client(value:Object):void

Auslöser
TypeError — Die client-Eigenschaft muss auf ein Objekt eingestellt werden, das nicht null ist.
dataEigenschaft 
data:Object  [read-only]

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Die Sammlung von Attributen, die der data-Eigenschaft des Objekts zugewiesen sind. Diese Attribute können gemeinsam genutzt und gespeichert werden. Jedes Attribut ist ein Objekt eines beliebigen ActionScript- oder JavaScript-Typs — Array, Number, Boolean, ByteArray, XML usw. Mit den folgenden Zeilen werden beispielsweise verschiedenen Aspekten eines gemeinsamen Objekts Werte zugewiesen:

  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]);
  }
  

Alle Attribute der data-Eigenschaft eines gemeinsamen Objekts werden gespeichert, wenn das Objekt dauerhaft ist, und das gemeinsame Objekt enthält die folgenden Informationen:

  userName: Ramona
  adminPrivileges: true
  itemNumbers: 101,346,483
  

Hinweis: Weisen Sie der data-Eigenschaft eines gemeinsamen Objekts keine Werte direkt zu, wie in so.data = someValue. Flash Player ignoriert diese Zuweisungen.

Um Attribute von lokalen gemeinsamen Objekten zu löschen, verwenden Sie folgende Syntax: delete so.data.attributeName. Das Attribut eines lokalen gemeinsamen Objekts wird nicht gelöscht, wenn Sie es auf null oder undefined setzen.

Um als privat definierte Werte für ein gemeinsames Objekt zu erstellen (d. h. Werte, die nur für die Client-Instanz verfügbar sind, wenn das Objekt verwendet wird, und die beim Schließen nicht zusammen mit dem Objekt gespeichert werden), erstellen Sie zum Speichern Eigenschaften, die nicht data heißen (siehe folgendes Beispiel).

  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]);
  }
  

Das gemeinsame Objekt enthält die folgenden Daten:

  favoriteSong: My World is Blue
  favoriteNightClub: The Bluenote Tavern
  favoriteColor: blue
  data: [object Object]
  

Bei gemeinsamen Remote-Objekten, die mit einem Server verwendet werden, stehen alle Attribute der data-Eigenschaft allen mit dem Objekt verbundenen Clients zur Verfügung, und alle Attribute werden gespeichert, wenn es sich um ein permanentes Objekt handelt. Wenn ein Client den Wert eines Attributs ändert, sehen alle Clients den neuen Wert.


Implementierung
    public function get data():Object

Siehe auch

defaultObjectEncodingEigenschaft 
defaultObjectEncoding:uint  [read-write]

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Die Standardobjektcodierung (AMF-Version) für alle in der SWF-Datei erstellten lokalen gemeinsamen Objekte. Wenn lokale gemeinsame Objekte auf Festplatte geschrieben werden, gibt die Eigenschaft SharedObject.defaultObjectEncoding an, welche AMF-Version verwendet werden soll: ActionScript 3.0 (AMF3) oder ActionScript 1.0 oder 2.0 (AMF0).

Nähere Informationen zur Objektcodierung einschließlich der Codierungsunterschiede zwischen gemeinsamen lokalen und Remote-Objekten finden Sie in der Beschreibung der Eigenschaft objectEncoding.

Standardmäßig wird SharedObject.defaultObjectEncoding auf die Verwendung des Formats ActionScript 3.0 (AMF3) eingestellt. Wenn Sie lokale gemeinsame Objekte benötigen, die von im Format ActionScript 2.0 oder 1.0 geschriebenen SWF-Dateien gelesen werden können, stellen Sie SharedObject.defaultObjectEncoding am Skriptanfang auf die Verwendung des Formats ActionScript 1.0 bzw. ActionScript 2.0 ein (flash.net.ObjectEncoding.AMF0), bevor Sie mit der Erstellung lokaler Objekte beginnen. Alle danach erstellten lokalen gemeinsamen Objekte verwenden die AMF0-Codierung und unterstützen somit ältere Inhalte. Es ist nicht möglich, den objectEncoding-Wert bereits erstellter lokaler gemeinsamer Objekte durch die Einstellung von SharedObject.defaultObjectEncoding zu ändern.

Um die Objektcodierung für die einzelnen Objekte anstatt für alle von der SWF-Datei erstellten gemeinsamen Objekte einzustellen, setzen Sie die objectEncoding-Eigenschaft stattdessen auf das jeweilige lokale gemeinsame Objekt.


Implementierung
    public static function get defaultObjectEncoding():uint
    public function set defaultObjectEncoding(value:uint):void

Siehe auch

fpsEigenschaft 
fps:Number  [write-only]

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Gibt an, wie oft pro Sekunde die clientseitigen Änderungen an einem gemeinsamen Objekt an den Server gesendet werden.

Verwenden Sie diese Methode, wenn Sie den Umfang des Datenverkehrs zwischen Client und Server steuern möchten. Beispiel: Wenn die Verbindungsgeschwindigkeit zwischen Client und Server ziemlich langsam ist, empfiehlt es sich, fps auf einen relativ niedrigen Wert zu setzen. Wenn der Client jedoch mit einer Multiuser-Anwendung verbunden ist und es auf die zeitliche Koordinierung ankommt, sollten Sie fps auf einen relativ hohen Wert setzen.

Durch Festlegen von fps wird ein sync-Ereignis ausgelöst und alle Änderungen werden beim Server aktualisiert. Wenn Sie den Server ausschließlich manuell aktualisieren möchten, müssen Sie fps auf 0 setzen.

Erst nach Auslösung des Ereignisses sync, werden die Änderungen an den Server gesendet. Das heißt, bei einer langsamen Reaktionszeit des Servers werden Aktualisierungen möglicherweise weniger häufig an den Server gesendet als in dieser Eigenschaft angegeben.


Implementierung
    public function set fps(value:Number):void
objectEncodingEigenschaft 
objectEncoding:uint  [read-write]

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Die Objektcodierung (AMF-Version) für dieses gemeinsame Objekt. Wenn ein lokales gemeinsames Objekt auf Festplatte geschrieben wird, gibt die Eigenschaft objectEncoding an, welche AMF-Version verwendet werden soll: ActionScript 3.0 (AMF3) oder ActionScript 1.0 oder 2.0 (AMF0).

Die Objektcodierung wird unterschiedlich gehandhabt, je nachdem, ob es sich um ein lokales gemeinsames Objekt oder um ein gemeinsames Remote-Objekt handelt.


Implementierung
    public function get objectEncoding():uint
    public function set objectEncoding(value:uint):void

Auslöser
ReferenceError — Sie haben versucht, den Wert für die objectEncoding-Eigenschaft eines gemeinsamen Remote-Objekts einzustellen. Diese Eigenschaft ist für gemeinsame Remote-Objekte schreibgeschützt, da dieser Wert von der zugehörigen NetConnection-Instanz festgelegt wird.

Siehe auch

sizeEigenschaft 
size:uint  [read-only]

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Ruft die aktuelle Größe des gemeinsamen Objekts in Byte ab.

Um die Größe eines gemeinsamen Objekts zu berechnen, analysiert Flash die einzelnen Dateneigenschaften des Objekts. Je mehr Dateneigenschaften ein Objekt aufweist, desto länger dauert es, die Größe zu ermitteln. Das Schätzen der Objektgröße kann sehr viel Verarbeitungszeit beanspruchen. Deshalb sollten Sie diese Methode vermeiden, sofern sie nicht wirklich erforderlich ist.


Implementierung
    public function get size():uint

Siehe auch


Beispiel

Mit dem folgenden Code wird ein SharedObject-Objekt mit der ID "thehobbit" erstellt: Eine Eigenschaft mit dem Namen username wird der Eigenschaft "data" des SharedObject-Objekts hinzugefügt. Die Eigenschaft size gibt dann den angegebenen Wert zurück.

import flash.net.SharedObject;

// if these get copied or not
var mySo:SharedObject = SharedObject.getLocal("thehobbit");
mySo.data.username = "bilbobaggins";
trace(mySo.size); // 55
Methodendetail
clear()Methode
public function clear():void

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Lokale gemeinsame Objekte: Entfernt alle Daten und löscht das gemeinsame Objekt von der Festplatte. Der Verweis auf das gemeinsame Objekt ist weiterhin aktiv, die zugehörigen Dateneigenschaften werden jedoch gelöscht.

Für gemeinsame Remote-Objekte, die mit Flash Media Server verwendet werden, trennt clear() die Verbindung zum Objekt und löscht alle Daten. Wenn das gemeinsame Objekt lokal gespeichert wird, wird es mit dieser Methode auch von der Festplatte gelöscht. Der Verweis auf das gemeinsame Objekt ist weiterhin aktiv, die zugehörigen Dateneigenschaften werden jedoch gelöscht.


Beispiel

Mit dem folgenden Code wird ein SharedObject-Objekt mit der ID hostName erstellt (und in anschließenden Durchläufen abgerufen). Eine Eigenschaft mit dem Namen username wird der Eigenschaft "data" des SharedObject-Objekts hinzugefügt. Anschließend wird die Methode clear() aufgerufen, die alle Informationen löscht, die dem Datenobjekt hinzugefügt wurden (in diesem Fall die Eigenschaft 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()Methode 
public function close():void

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Schließt die Verbindung zwischen einem gemeinsamen Remote-Objekt und dem Server. Wenn ein gemeinsames Remote-Objekt permanent lokal gespeichert ist, kann der Benutzer nach dem Aufruf dieser Methode Änderungen an der lokalen Kopie vornehmen. Das nächste Mal, wenn der Benutzer eine Verbindung zu dem gemeinsamen Remote-Objekt herstellt, werden diese Änderungen an den Server gesendet.

connect()Methode 
public function connect(myConnection:NetConnection, params:String = null):void

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Stellt über ein angegebenes NetConnection-Objekt eine Verbindung zu einem gemeinsamen Remote-Objekt her. Verwenden Sie diese Methode nach dem Aufruf von getRemote(). Wird die Verbindung erfolgreich hergestellt, wird das sync-Ereignis ausgelöst.

Bevor Sie beginnen, mit einem gemeinsamen Remote-Objekt zu arbeiten, prüfen Sie, ob Fehler vorliegen, indem Sie eine try..catch..finally Anweisung verwenden. Warten Sie dann auf das Ereignis sync und verarbeiten Sie es, bevor Sie Änderungen am gemeinsamen Objekt vornehmen. Alle Änderungen, die lokal vor dem Auslösen des sync-Ereignisses vorgenommen werden, können verloren gehen.

Rufen Sie die connect()-Methode auf, um eine Verbindung zu einem gemeinsamen Remote-Objekt herzustellen, zum Beispiel:

  var myRemoteSO:SharedObject = SharedObject.getRemote("mo", myNC.uri, false);
  myRemoteSO.connect(myNC);
  

Parameter

myConnection:NetConnection — Ein NetConnection-Objekt, das das Real-Time Messaging Protocol (RTMP) verwendet, zum Beispiel für die Kommunikation mit Flash Media Server.
 
params:String (default = null) — Ein String, der eine Meldung definiert, die an das gemeinsame Remote-Objekt auf dem Server übergeben wird. Kann nicht mit Flash Media Server verwendet werden.


Auslöser
Error — Flash Player konnte keine Verbindung zu dem angegebenen gemeinsamen Remote-Objekt herstellen. Vergewissern Sie sich, dass die NetConnection-Instanz gültig und verbunden ist und dass das gemeinsame Remote-Objekt erfolgreich auf dem Server erstellt wurde.

Siehe auch

flush()Methode 
public function flush(minDiskSpace:int = 0):String

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Schreibt ein lokal permanentes gemeinsames Objekt in eine lokale Datei. Wenn Sie diese Methode nicht verwenden, schreibt Flash Player das gemeinsame Objekt in eine Datei, wenn die Sitzung des gemeinsamen Objekts endet — d. h., wenn die SWF-Datei geschlossen wird, wenn das gemeinsame Objekt gelöscht wird, weil keine weiteren Verweise darauf vorhanden sind, oder wenn Sie SharedObject.clear() oder SharedObject.close() aufrufen.

Wenn diese Methode SharedObjectFlushStatus.PENDING zurückgibt, fordert Flash Player den Benutzer in einem Dialogfeld auf, mehr Speicherplatz für Objekte dieser Domäne bereitzustellen. Wenn der Speicherplatz für das gemeinsame Objekt in Zukunft zunehmen darf, um die Rückgabe des Werts PENDING zu vermeiden, belegen Sie minDiskSpace mit einem Wert. Bei dem Versuch, eine Datei zu schreiben, ermittelt Flash Player die Anzahl der an minDiskSpace übergebenen Byte, anstatt lediglich zu überprüfen, ob der vorhandene Platz zum Speichern des gemeinsamen Objekts in der aktuellen Größe ausreicht.

Wenn Sie beispielsweise annehmen, dass ein gemeinsames Objekt maximal 500 Byte groß wird, übergeben Sie 500 als Wert für minDiskSpace, auch wenn die Datei zunächst viel kleiner ist. Flash fordert dann den Benutzer auf, für das gemeinsame Objekt 500 Byte Speicherplatz bereitzustellen. Wenn der Benutzer den gewünschten Speicherplatz zuweist, ist es in Zukunft beim Ausgeben des Objekts nicht erforderlich, mehr Speicherplatz anzufordern (sofern die Größe 500 Byte nicht übersteigt).

Nachdem der Benutzer auf dieses Dialogfeld reagiert hat, wird diese Methode erneut aufgerufen. Ein netStatus-Ereignis wird mit der code-Eigenschaft SharedObject.Flush.Success oder SharedObject.Flush.Failed ausgelöst

Parameter

minDiskSpace:int (default = 0) — Der minimale Speicherplatz in Byte, der für dieses Objekt zugewiesen werden muss.

Rückgabewerte
String — Einer der folgenden Werte:
  • SharedObjectFlushStatus.PENDING : Der Benutzer hat das Speichern lokaler Daten für Objekte dieser Domäne zugelassen, der zugewiesene Platz reicht aber zum Speichern des Objekts nicht aus. Flash Player fordert den Benutzer auf, zusätzlichen Speicherplatz zuzuweisen. Wenn der Speicherplatz für das gemeinsame Objekt in Zukunft zunehmen darf, um die Rückgabe des Werts SharedObjectFlushStatus.PENDING zu vermeiden, belegen Sie minDiskSpace mit einem Wert.
  • SharedObjectFlushStatus.FLUSHED : Das gemeinsame Objekt wurde erfolgreich in eine Datei auf der lokalen Festplatte geschrieben.

Auslöser
Error — Flash Player kann das gemeinsame Objekt nicht auf Festplatte schreiben. Dieser Fehler kann auftreten, wenn der Benutzer das Speichern lokaler Daten für Objekte dieser Domäne generell nicht zugelassen hat.

Hinweis: Über lokale Inhalte können immer gemeinsame Objekte von Dritt-Domänen (anderen Domänen als der in der Adresszeile des Browsers) auf Festplatte geschrieben werden, auch wenn das Schreiben gemeinsamer Objekte durch Dritt-Domänen nicht zulässig ist.

Siehe auch


Beispiel

Mit dem folgenden Code wird ein SharedObject-Objekt mit der ID hostName erstellt (und in anschließenden Durchläufen abgerufen). Eine Eigenschaft mit dem Namen username wird der Eigenschaft "data" des SharedObject-Objekts hinzugefügt. Anschließend wird die Methode flush() aufgerufen, und es wird überprüft, ob der String pending oder der boolesche Wert true bzw. false zurückgegeben wurde. Beachten Sie, dass alle geöffneten SharedObject-Instanzen automatisch ausgegeben werden, wenn die aktuelle Flash Player-Instanz geschlossen wird.
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()Methode 
public static function getLocal(name:String, localPath:String = null, secure:Boolean = false):SharedObject

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Gibt einen Verweis auf ein lokal permanentes gemeinsames Objekt zurück, das nur für den aktuellen Client verfügbar ist. Falls das gemeinsam genutzte Objekt nicht bereits existiert, wird es durch diese Methode erstellt. Wenn einer oder mehrere der an getLocal() übergebenen Werte ungültig sind oder der Aufruf fehlschlägt, gibt Flash Player eine Ausnahme aus.

Anhand des folgenden Codes wird gezeigt, wie Sie den zurückgegebenen Verweis auf ein gemeinsames Objekt einer Variablen zuordnen:

var so:SharedObject = SharedObject.getLocal("savedData");

Hinweis: Wenn der Benutzer für diese Domäne generell keine lokale Speicherung zulässt, wird das Objekt auch dann nicht lokal gespeichert, wenn für localPath ein lokaler Pfad angegeben wurde. Es gibt eine Ausnahme zu dieser Regel: lokale Inhalte. Über lokale Inhalte können immer gemeinsam genutzte Objekte von Dritt-Domänen (anderen Domänen als der in der Adresszeile des Browsers) auf Festplatte geschrieben werden, auch wenn das Schreiben gemeinsam genutzter Objekte durch Dritt-Domänen nicht zulässig ist.

Um Namenskonflikte zu vermeiden, wird in Flash auch der Speicherort der SWF-Datei einbezogen, die das gemeinsame Objekt erstellt hat. Wenn zum Beispiel eine SWF-Datei auf "www.meineFirma.com/apps/stockwatcher.swf" ein gemeinsames Objekt namens portfolio erstellt, entsteht kein Konflikt mit einem anderen, ebenfalls portfolio genannten Objekt, das von einer SWF-Datei auf "www.IhreFirma.com/photoshoot.swf" erstellt wurde, weil die beiden SWF-Dateien aus zwei verschiedenen Verzeichnissen stammen.

localPath ist zwar ein optionaler Parameter, dennoch sollten Sie seine Verwendung in Erwägung ziehen, insbesondere wenn andere SWF-Dateien auf das gemeinsame Objekt zugreifen müssen. Wenn die Daten im gemeinsamen Objekt speziell für eine SWF-Datei gelten, die nicht an einen anderen Speicherort verschoben wird, ist die Verwendung des Standardwertes sinnvoll. Wenn andere SWF-Dateien auf das gemeinsame Objekt zugreifen müssen oder wenn die SWF-Datei, die das gemeinsame Objekt erstellt, zu einem späteren Zeitpunkt verschoben wird, kann der Wert dieses Parameters entscheidend dafür sein, ob SWF-Dateien auf das gemeinsame Objekt zugreifen können. Wenn Sie beispielsweise ein gemeinsames Objekt erstellen und für localPath der Standardwert des vollständigen Pfads zur SWF-Datei eingestellt ist, kann keine andere SWF-Datei auf das gemeinsame Objekt zugreifen. Wenn Sie die Original-SWF-Datei später an einen anderen Speicherort verschieben, kann selbst diese SWF-Datei nicht mehr auf die bereits im gemeinsamen Objekt gespeicherten Daten zugreifen.

Verwenden Sie den Parameter localpath, um die versehentliche Beschränkung des Zugriffs auf ein gemeinsames Objekt zu vermeiden. Wenn Sie möchten, dass das gemeinsame Objekt für alle SWF-Dateien in der Domäne verfügbar ist, setzen Sie den Parameter localPath auf / (Schrägstrich). Dadurch wird jedoch das Risiko der Namenskonflikte mit anderen gemeinsamen Objekten in der Domäne erhöht. Sie können die Möglichkeiten ein Stück weit einschränken, indem Sie den Parameter localPath auf Ordnernamen aus dem vollständigen Pfad der SWF-Datei setzen. Beispiel: Für das von der SWF-Datei unter "www.myCompany.com/apps/stockwatcher.swf" erstellte gemeinsame Objekt portfolio können Sie den Parameter localPath auf /, /apps oder /apps/stockwatcher.swf setzen. Welcher Ansatz für Ihre Anwendung die meiste Flexibilität bietet, ist von der jeweiligen Anwendung abhängig.

Beachten Sie bei Verwendung dieser Methode das folgende Sicherheitsmodell von Flash Player:

Beispiel: Sie veröffentlichen die Inhalte einer SWF-Datei für die Wiedergabe als lokale Dateien (entweder lokal installierte SWF-Dateien oder EXE-Dateien) und müssen von mehreren lokalen SWF-Dateien auf ein bestimmtes gemeinsames Objekt zugreifen. In dieser Situation müssen Sie darauf achten, dass für die lokalen Dateien möglicherweise zwei verschiedene Speicherorte zur Speicherung von gemeinsamen Objekten verwendet werden. Welche Domäne verwendet wird, hängt von den Sicherheitsberechtigungen der lokalen Datei ab, die das gemeinsame Objekt erstellt hat. Für lokale Dateien sind drei verschiedene Berechtigungsstufen möglich:

  1. Nur Zugriff auf das lokale Dateisystem
  2. Nur Zugriff auf das Netzwerk
  3. Zugriff auf das Netzwerk und auf das lokale Dateisystem

Lokale Dateien mit Zugriff auf das lokale Dateisystem (Stufe 1 oder 3) speichern gemeinsame Objekte an einem Speicherort. Lokale Dateien ohne Zugriff auf das lokale Dateisystem (Stufe 2) speichern gemeinsame Objekte an einem anderen Speicherort.

Sie können eine SWF-Datei daran hindern, diese Methode aufzurufen, indem Sie in der HTML-Seite, die den SWF-Inhalt enthält, den Parameter allowNetworking der Tags object und embed festlegen.

Weitere Informationen finden Sie in den folgenden Abschnitten:

Parameter

name:String — Der Name des Objekts. Der Name darf Schrägstriche (/) enthalten. So ist beispielsweise work/addresses ein gültiger Name. Der Name eines gemeinsamen Objekts darf weder Leerzeichen noch folgende Zeichen enthalten:
  ~ % & \ ; : " ', < > ? # 
  
 
localPath:String (default = null) — Der vollständige oder Teilpfad zur SWF-Datei, die das gemeinsame Objekt erstellt hat und die den lokalen Speicherort des gemeinsamen Objekts festlegt. Wenn Sie diesen Parameter nicht angeben, wird der vollständige Pfad verwendet.
 
secure:Boolean (default = false) — Hiermit wird festgelegt, ob der Zugriff auf dieses gemeinsame Objekt auf SWF-Dateien beschränkt wird, die über eine HTTPS-Verbindung bereitgestellt werden. Wenn die SWF-Datei über eine HTTPS-Verbindung bereitgestellt wird, hat der Wert dieses Parameters folgende Auswirkungen:
  • Falls dieser Parameter auf true gesetzt wird, erstellt Flash Player ein neues sicheres gemeinsam genutztes Objekt oder ruft einen Verweis auf ein vorhandenes sicheres gemeinsam genutztes Objekt ab. Dieses sichere gemeinsam genutzte Objekt kann nur durch SWF-Dateien gelesen oder geschrieben werden, die über HTTPS bereitgestellt werden und SharedObject.getLocal() mit der Einstellung true für den secure-Parameter aufrufen.
  • Wenn dieser Parameter auf false gesetzt wird, erstellt Flash Player ein neues gemeinsames Objekt oder ruft den Verweis auf ein vorhandenes gemeinsames Objekt ab, das durch SWF-Dateien gelesen oder geschrieben werden kann, die über andere Verbindungen als HTTPS bereitgestellt werden.

Wenn die SWF-Datei über eine andere Verbindung als HTTPS bereitgestellt wird und Sie diesen Parameter auf true setzen, tritt bei der Erstellung des neuen gemeinsam genutzten Objekts (bzw. beim Zugriff auf ein zuvor erstelltes sicheres gemeinsam genutztes Objekt) ein Fehler auf, und es wird null zurückgegeben. Unabhängig vom Wert dieses Parameters belegen die erstellten gemeinsamen Objekte einen Teil des von einer Domäne belegten Speicherplatzes.

Aus dem folgenden Diagramm geht die Verwendung des Parameters secure hervor.

Rückgabewerte
SharedObject — Gibt einen Verweis auf ein lokal permanentes gemeinsames Objekt zurück, das nur für den aktuellen Client verfügbar ist. Wenn Flash Player das gemeinsame Objekt nicht erstellen oder finden kann (wenn beispielsweise das mit localPath angegebene Verzeichnis nicht vorhanden ist), löst diese Methode eine Ausnahme aus.

Auslöser
Error — Flash Player kann das gemeinsame Objekt nicht erstellen. Dieser Fehler kann auftreten, wenn das Erstellen und Speichern von permanenten gemeinsamen Objekten durch Flash-Inhalte Dritter nicht erlaubt ist (gilt nicht für lokale Inhalte). Benutzer können unter http://www.adobe.com/support/documentation/en/flashplayer/help/settings_manager03.html im Einstellungsmanager im Bedienfeld "Globale Speichereinstellungen" festlegen, dass permanente gemeinsame Objekte von Dritten nicht zulässig sind.

Siehe auch

getRemote()Methode 
public static function getRemote(name:String, remotePath:String = null, persistence:Object = false, secure:Boolean = false):SharedObject

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Gibt einen Verweis auf das gemeinsame Objekt auf Flash Media Server zurück, auf das mehrere Clients zugreifen können. Falls das gemeinsame Remote-Objekt nicht bereits existiert, wird es durch diese Methode erstellt.

Um ein gemeinsames Remote-Objekt zu erstellen, rufen Sie getRemote() nach dem Aufruf von connect() auf, um das gemeinsame Remote-Objekt mit dem Server zu verbinden wie im folgenden Beispiel:

     var nc:NetConnection = new NetConnection();
     nc.connect("rtmp://somedomain.com/applicationName");
     var myRemoteSO:SharedObject = SharedObject.getRemote("mo", nc.uri, false);
     myRemoteSO.connect(nc);
     

Mit dem Ereignis sync wird bestätigt, dass die lokalen und Remote-Kopien des gemeinsamen Objekts synchronisiert sind. Alle Clients, die dieses Objekt gemeinsam verwenden sollen, müssen dieselben Werte für die Parameter name und remotePath übergeben.

Zur Erstellung eines gemeinsamen Objekts, das nur für den aktuellen Client verfügbar ist, verwenden SieSharedObject.getLocal().

Parameter

name:String — Der Name des gemeinsamen Remote-Objekts. Der Name kann Schrägstriche (/) enthalten. So ist beispielsweise "work/addresses" ein gültiger Name. Der Name eines gemeinsamen Objekts darf weder Leerzeichen noch folgende Zeichen enthalten:
 ~ % & \ ; : " ', > ? ? #
 
remotePath:String (default = null) — Der URI des Servers, auf dem das gemeinsame Objekt gespeichert wird. Dieser URI muss mit dem URI des NetConnection-Objekts übereinstimmen, das an die Methode connect() übergeben wird.
 
persistence:Object (default = false) — Gibt an, ob die Dateneigenschaft des gemeinsamen Objekts die lokal permanente Speicherung, die permanente Remote-Speicherung oder beide Attribute aufweist. Mit diesem Parameter kann auch angegeben werden, wo das gemeinsame Objekt lokal gespeichert wird. Folgende Werte sind zulässig:
  • Der Wert false gibt an, dass das gemeinsame Objekt nicht permanent auf dem Client oder auf dem Server gespeichert wird.
  • Der Wert true gibt an, dass das gemeinsame Objekt nur auf dem Server permanent gespeichert wird.
  • Ein vollständig oder teilweise angegebener lokaler Pfad zum gemeinsamen Objekt gibt an, dass das gemeinsame Objekt permanent auf dem Client und auf dem Server gespeichert wird. Auf dem Client wird es unter dem angegebenen Pfad und auf dem Server in einem Unterverzeichnis des Anwendungsverzeichnisses gespeichert.

Hinweis: Wenn der Benutzer für diese Domäne generell keine lokale Speicherung zulässt, wird das Objekt auch dann nicht lokal gespeichert, wenn ein lokaler Pfad angegeben wurde. Weitere Informationen finden Sie in der Beschreibung zur Klasse.

 
secure:Boolean (default = false) — Hiermit wird festgelegt, ob der Zugriff auf dieses gemeinsame Objekt auf SWF-Dateien beschränkt wird, die über eine HTTPS-Verbindung bereitgestellt werden. Weitere Informationen finden Sie in den Erläuterungen zum Parameter secure im Eintrag zur Methode getLocal.

Rückgabewerte
SharedObject — Ein Verweis auf ein Objekt, das von mehreren Clients gemeinsam genutzt werden kann.

Auslöser
Error — Flash Player kann das gemeinsame Objekt weder erstellen noch öffnen. Dieser Fall kann eintreten, wenn für die Parameter remotePath und persistence nicht vorhandene Pfade angegeben wurden.

Siehe auch

send()Methode 
public function send(... arguments):void

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Überträgt eine Meldung an alle mit einem gemeinsamen Remote-Objekt verbundenen Clients, einschließlich des Clients, von dem die Meldung gesendet wurde. Zur Verarbeitung und Beantwortung der Meldung erstellen Sie eine Callback-Funktion, die mit dem gemeinsamen Objekt verknüpft wird.

Parameter

... arguments — Ein oder mehrere Argumente: Ein String, der die Meldung identifiziert, der Name einer oder mehrerer Verarbeitungsfunktionen, die an das gemeinsame Objekt angehängt werden, und optionale Parameter beliebigen Typs. Der Prozedurname darf nur eine Ebene umfassen (d. h. die Form übergeordnet/untergeordnet ist nicht zulässig) und hängt vom gemeinsamen Objekt ab. Die Argumente werden serialisiert, über die Verbindung gesendet und von der Empfangsprozedur in derselben Reihenfolge empfangen. Wenn es sich bei dem Parameter um ein zyklisches Objekt handelt (z. B. eine verknüpfte zyklische Liste), werden die Verweise bei der Serialisierung korrekt verarbeitet.

Hinweis: Verwenden Sie keine reservierten Begriffe als Funktionsnamen. Beispiel: Bei Verwendung von myRemoteSO.send("close") schlägt die Prozedur fehl.

setDirty()Methode 
public function setDirty(propertyName:String):void

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Weist den Server an, dass der Wert einer Eigenschaft im gemeinsamen Objekt geändert wurde. Diese Methode kennzeichnet Eigenschaften als geändert (dirty).

Rufen Sie SharedObject.setProperty() auf, um Eigenschaften für ein gemeinsames Objekt zu erstellen.

Die SharedObject.setProperty()-Methode implementiert setDirty(). In den meisten Fällen (bei einfachen Eigenschaftswerten wie "String" oder "Number") können Sie setProperty() anstelle von setDirty() aufrufen. Wenn es sich bei dem Eigenschaftswert jedoch um ein Objekt mit eigenen Eigenschaften handelt, rufen Sie setDirty() auf, um anzugeben, wenn ein Wert innerhalb des Objekts geändert wurde.

Parameter

propertyName:String — Der Name der geänderten Eigenschaft.

Siehe auch

setProperty()Methode 
public function setProperty(propertyName:String, value:Object = null):void

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Aktualisiert den Wert einer Eigenschaft in einem gemeinsamen Objekt und informiert den Server, dass der Wert der Eigenschaft geändert wurde. Die setProperty()-Methode markiert Eigenschaften ausdrücklich als geändert ("dirty").

Weitere Informationen zu gemeinsamen Remote-Objekten finden Sie in der Dokumentation zu Flash Media Server.

Hinweis: Die Methode SharedObject.setProperty() implementiert die Methode setDirty(). In den meisten Fällen (bei einfachen Eigenschaftswerten wie "String" oder "Number") verwenden Sie setProperty() anstelle von setDirty(). Wenn es sich bei dem Eigenschaftswert jedoch um ein Objekt mit eigenen Eigenschaften handelt, verwenden Sie setDirty(), um anzugeben, wenn ein Wert innerhalb des Objekts geändert wurde. Im Allgemeinen empfiehlt es sich, setProperty() anstelle von setDirty() aufzurufen, da setProperty() einen Eigenschaftswert nur aktualisiert, wenn sich dieser Wert geändert hat; im Gegensatz dazu erzwingt setDirty() eine Synchronisierung aller Clients mit Abonnement.

Parameter

propertyName:String — Der Name der Eigenschaft im gemeinsamen Objekt.
 
value:Object (default = null) — Der Wert der Eigenschaft (ein ActionScript-Objekt) oder null zum Löschen der Eigenschaft.

Siehe auch

Ereignisdetail
asyncError Ereignis
Ereignisobjekttyp: flash.events.AsyncErrorEvent
AsyncErrorEvent.type property = flash.events.AsyncErrorEvent.ASYNC_ERROR

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Wird ausgelöst, wenn eine Ausnahme asynchron ausgelöst wird – das heißt, aus nativem asynchronem Code.

Die Konstante AsyncErrorEvent.ASYNC_ERROR definiert den Wert der type-Eigenschaft eines asyncError-Ereignisobjekts.

Dieses Ereignis verfügt über die folgenden Eigenschaften:

EigenschaftWert
bubblesfalse
cancelablefalse. Es gibt kein Standardverhalten, das abgebrochen werden kann.
currentTargetDas Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet.
targetDas Objekt, bei dem der Netzwerkvorgang fehlschlägt.
errorDer Fehler, der das Ereignis ausgelöst hat.
netStatus Ereignis  
Ereignisobjekttyp: flash.events.NetStatusEvent
NetStatusEvent.type property = flash.events.NetStatusEvent.NET_STATUS

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Wird ausgelöst, wenn der Status oder die Fehlerbedingung einer SharedObject-Instanz protokolliert wird. Das Ereignis netStatus enthält die Eigenschaft info. Dabei handelt es sich um ein Informationsobjekt mit spezifischen Informationen über das Ereignis, z. B. ob ein Verbindungsversuch erfolgreich war oder ob das gemeinsame Objekt erfolgreich auf die lokale Festplatte geschrieben werden konnte.

Definiert den Wert der Eigenschaft type eines netStatus-Ereignisobjekts.

Dieses Ereignis verfügt über die folgenden Eigenschaften:

EigenschaftWert
bubblesfalse
cancelablefalse. Es gibt kein Standardverhalten, das abgebrochen werden kann.
currentTargetDas Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet.
infoEin Objekt mit Eigenschaften, die den Status oder die Fehlerbedingung des Objekts beschreiben.
targetDas NetConnection- oder NetStream-Objekt, dessen Status protokolliert wird.

Siehe auch

sync Ereignis  
Ereignisobjekttyp: flash.events.SyncEvent
SyncEvent.type property = flash.events.SyncEvent.SYNC

Sprachversion : ActionScript 3.0
Player-Version : Flash Player 9

Wird ausgelöst, wenn ein gemeinsames Remote-Objekt vom Server aktualisiert wurde.

Definiert den Wert der Eigenschaft type eines sync-Ereignisobjekts.

Dieses Ereignis verfügt über die folgenden Eigenschaften:

EigenschaftWert
bubblesfalse
cancelablefalse. Es gibt kein Standardverhalten, das abgebrochen werden kann.
currentTargetDas Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet.
changeListEin Array mit Eigenschaften, die den Array-Status wiedergeben.
targetDie vom Server aktualisierte SharedObject-Instanz.

Siehe auch

Beispiele Verwendung von Beispielen
SharedObjectExample.as

Mit dem folgenden Code wird ein SharedObject-Objekt mit der ID "application-name" erstellt (und in anschließenden Durchläufen abgerufen). Wenn der Benutzer auf die Schaltfläche "Speichern" klickt, versucht die Methode saveValue(), eine Eigenschaft mit dem Namen savedValue in der data-Eigenschaft des SharedObject-Objekts zu speichern. Wenn Flash Player eine Genehmigung zur Speicherung der Daten anfragen muss, wird bei Gewährung bzw. Ablehnung der Genehmigung die Methode onFlushStatus() aufgerufen. Wenn der Benutzer auf die Schaltfläche "Löschen" klickt, wird der in savedValue gespeicherte Wert über die Methode clearValue() gelöscht. Beim nächsten Laden der SWF-Datei lautet der abgerufene Wert 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;
        }
    }
}




 

Eine E-Mail an mich senden, wenn dieser Seite Kommentare hinzugefügt werden | Kommentarbericht

Aktuelle Seite: http://livedocs.adobe.com/flash/9.0_de/ActionScriptLangRefV3/flash/net/SharedObject.html