Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-10-2005, 22:26   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
SharedObject auslesen

Hi,

ich überbege dieses Obj :

ActionScript:
  1. var myTestObj = new Object();
  2. myTestObj.num = 1234;
  3. myTestObj.str = "Ich bin ein String";
  4. myTestObj.bol = true;
  5. myTestObj.arr = ["Thomas", "Lukas", "Franz", "Max"];
  6.  
  7. var  mySharedObj = SharedObject.getLocal("meineDaten")
  8. mySharedObj.data.myObj = myTestObj;
  9. .
  10. .
  11. .

Auslesen versuche ich so :

ActionScript:
  1. var mySharedObj = SharedObject.getLocal ("meineDaten");
  2. // abfragen ob erfolgreich geladen.
  3. if (!(mySharedObj == null))
  4. {
  5.     // deinem Object die geladenen Daten zuweisen
  6.     _global.meineGeladenenDaten = mySharedObj.data;
  7.     trace(meineGeladenenDaten)
  8. }

Bekomme aber nur immer [object Objekt]

Wie kann ich das jetzt auslesen ?
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Alt 19-10-2005, 22:58   #2 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Ort: Berlin
Beiträge: 283
ActionScript:
  1. trace(meineGeladenenDaten.num);
  2. trace(meineGeladenenDaten.str);
  3. .
  4. .
  5. .
__________________
ein mensch ohne macke ist kacke...
DaKinel ist offline   Mit Zitat antworten
Alt 19-10-2005, 23:07   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
Hi,

nee, da kommt undefined !
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Alt 19-10-2005, 23:12   #4 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
was spuckt
ActionScript:
  1. for (var i in _global.meineDaten) {
  2. trace(i + " : " + _global.meineDaten[i]);
  3. }
aus?
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 19-10-2005, 23:15   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
Hi,

spuckt nichts aus ! Kein trace oder sonstwas.
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Alt 19-10-2005, 23:17   #6 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Dann ist in dem SharedObject nichts gespeichert.

EDIT:
befinden sich beide Code-Fragmente in dem gleichen Film?
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 19-10-2005, 23:26   #7 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
Nö, sind zwei Filme.

Habe das Script hier aus dem Forum. Find den link jetzt nicht, deshalb
setzte ich es einfach nochmal rein:

1. Film:

ActionScript:
  1. // Beispieldaten deklarieren
  2. var myTestObj = new Object();
  3. myTestObj.num = 1234;
  4. myTestObj.str = "Ich bin ein String";
  5. myTestObj.bol = true;
  6. myTestObj.arr = ["Thomas", "Lukas", "Franz", "Max"];
  7.  
  8.  
  9. // SharedObject wird erzeugt
  10. var  mySharedObj = SharedObject.getLocal("meineDaten")
  11.  
  12. // Funktion speichern
  13. function speichern()
  14. {
  15.   // das Test-Objekt wird nun der SharedObject.data-Eigenschaft zugewiesen
  16.   mySharedObj.data.myObj = myTestObj;
  17.  
  18.   // Größe unseres SharedObject ermitteln
  19.   // getSize() / 1024 = KByte
  20.   // wir geben 15 KByte dazu um nicht immer Platz fordern zu müssen.
  21.   // muss man nicht machen
  22.   var myKB = Math.ceil( mySharedObj.getSize() / 1024)+15;
  23.   trace("Speicherplatz-Größe in KByte: " + myKB);
  24.  
  25.   // Rückgabewert von flush() und SharedObject speichern
  26.   // myKB *1024 um wieder auf Byte zu kommen
  27.   var tmp = mySharedObj.flush(myKB * 1024);
  28.  
  29.   // wenn die Rückgabe von flush() ...
  30.   if (tmp)
  31.   {
  32.     //... true ist: erfolgreich
  33.     trace("Speichern erfolgreich");
  34.   }else if ( tmp == "pending")
  35.   {
  36.     //... "pending" ist: Flash fordert mehr speicher
  37.     trace("Es wird mehr Speicherplatz benötigt");
  38.   }else if(!tmp)
  39.   {
  40.     //... false ist: Ist das Speichern nicht erlaubt
  41.     trace("Keine Speicherberechtigung! Bitte 'Never' unter lokale Einstellungen demarkieren.");
  42.     // öffnen des Dialogfensters
  43.     System.showSettings(1);
  44.   }
  45.  
  46.  
  47.   // jetzt der Event-Handler onStatus()
  48.   // wird aufgerufen wenn flush() "pending" zurückgibt
  49.   // onStatus() deklarieren und infoObject nicht vergessen.
  50.   mySharedObj.onStatus = function(infoObject)
  51.   {
  52.     // Hat User genügend Speicherplatz zur Verfügung gestellt?
  53.     if (infoObject.code == "SharedObject.Flush.Success")
  54.     {
  55.       //User hat genügend Speicherplatz zur Verfügung gestellt
  56.       trace("Genügend Speicherplatz erhalten. Speichern erfolgreich");
  57.     }else if (infoObject.code == "SharedObject.Flush.Failed")
  58.     {
  59.       //User hat nicht genügendSpeicherplatz zur Verfügung gestellt
  60.       trace("Nicht genügend Speicherplatz erhalten. Speichern Fehlgeschlagen");
  61.     }
  62.   }
  63. }
  64. speichern()


2.Film:

ActionScript:
  1. // SharedObject deklarieren
  2. var mySharedObj = SharedObject.getLocal ("meineDaten");
  3. // abfragen ob erfolgreich geladen.
  4. if (!(mySharedObj == null))
  5. {
  6.     // deinem Object die geladenen Daten zuweisen
  7.     meineDaten = mySharedObj.data;
  8.     for (var i in _global.meineDaten)
  9.     {
  10.         trace (i + " : " + _global.meineDaten[i]);
  11.     }
  12. }
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Alt 20-10-2005, 10:13   #8 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Der 2te File kann nicht auf das SharedObject zugreifen, weild dies unter einen anderen Pfad gespeichert wird.

Wenn 2 verschiedene swf's das gleiche SharedObject nutzen sollen müsste man es glaube ich so anlegen und auslesen:
PHP-Code:
var  mySharedObj SharedObject.getLocal"meineDaten" "/" ); 
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 20-10-2005, 11:03   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
Hi rendner,

jetzt wo du es sagst......

Die Shared *.sol wird ja unter den Ordner mit den swf Namen gespeichert.

Andere Frage:

Ich will ein Array mit MC-namen übergeben das zur Laufzeit erstellt wird.
Das gefüllte Array besteht aber nur solange die SWF offen ist. Bei erneuten
öffnen ist der Inhalt des Arrays nicht mehr da.
String, Number und Array mit diesen Datentypen sind da.

Hast du oder ein anderer eine Erkärung dafür ?
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Alt 20-10-2005, 11:18   #10 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
?
Kann eigentlich nicht sein.
Weis nicht, muss dann an deinen Script liegen.
Hier mal mein Test:
PHP-Code:
// Beispieldaten deklarieren
var myTestObj Object = new Object();
myTestObj.num 1234;
myTestObj.str "Ich bin ein String";
myTestObj.bol true;
myTestObj.arr = ["Thomas""Lukas""Franz""Max"];

var  
mySharedObj SharedObject =new SharedObject();
mySharedObj SharedObject.getLocal("meineDaten");
if( ! 
mySharedObj.data.myObj mySharedObj.data.myObj myTestObj;
else{
        var 
Object = new Object();
        
mySharedObj.data.myObj;
        for (var 
i in o)
        {
                
trace (" : " o[i]);
        }


__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 20-10-2005, 11:48   #11 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
Ich meine das mit dem Array so:

Ich ziehe aus einer Box mit Drag verschiedene MC in einen Cont.
Diese MC werden bei onRelease über PUSH in das Array geschrieben.

trace(typeof(meinAr[0])) => Mocieclip

Dieses Array läst sich auch Speichern. Über ein Kontrollbutton sehe ich, das das
Array in der *.SOL da ist.

Schließe ich die Datei und öffne sie wieder , ist das Array noch da, aber die Inhalte sind alle undefined.
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Alt 20-10-2005, 12:05   #12 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Du speicherst ja auch sicher nicht die Namen der MovieClips sondern nur ne Referenz auf diese.

Zum Beispiel das gleiche bloss ohne SharedeObject:
PHP-Code:
// Referenz auf testMovie in mc speichern
var mc this.createEmptyMovieClip"testMovie"0);
trace"mc= " +  mc );
testMovie.removeMovieClip();
trace"mc= " mc ); 
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 23-07-2008, 09:37   #13 (permalink)
Hardstyle DJ
 
Benutzerbild von djdwarf
 
Registriert seit: Nov 2004
Ort: Hamburg
Beiträge: 622
Ich klinke mich mal an dieser Stelle ein, da ich das Anfangs geschilderte Problem ebenfalls habe.

Habe das gleiche Tut verwendet ([TUT] SharedObject, Shared-Doc's, Flash-Cookies).

Das speichern funzt soweit ohne Probleme. *.sol wird geschrieben und Inhalte stehen drin. Ich bekomm das Teil aber ums verrecken nicht ausgelesen! Egal ob auslesen in der gleichen swf oder einer anderen ... ob local, oder mittels apache ... ich erhalte nie meine Werte.

PHP-Code:
// SharedObject deklarieren
var  mySharedObj SharedObject.getLocal("meineDaten");

// abfragen ob erfolgreich geladen.

if ( !(mySharedObj == null) )
{
    
trace("gefunden!");
  
// deinem Object die geladenen Daten zuweisen
  
_global.meineGeladenenDaten mySharedObj.data;
  
test.text _global.meineGeladenenDaten.str;
  
trace(_global.meineGeladenenDaten.str);
  
      for (var 
i in _global.meineDaten) {
      
trace(" : " _global.meineDaten[i]);
      } 
  
  
}  else {
    
trace("nicht gefunden ...");
    } 

Die for Schleife (die oben angefragt wurde) wird ebenfalls nicht einmal durchlaufen.

Das komische ist auch, dass "gefunden!" immer ausgegeben wird. Selbst wenn ich im Verzeichnis die sol lösche.



Was läuft denn da falsch?
djdwarf ist offline   Mit Zitat antworten
Alt 23-07-2008, 09:58   #14 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Es gibt zwei fälle die zu einem "gefunden" führen.
Zum einen, dass es das SharedObject schon gab, und zum anderen, dass neu angelegt werden konnte.
Ich sehe nicht, dass du jemals etwas in das SharedObject schreibst, wie soll dann was rauskommen?
Hier mal ein Testcode, der einfach die Variable "counter" im SharedObject jedesmal eins hochzählen sollte, jedesmal, wenn du den Film laufen lässt.
PHP-Code:
if ( !(mySharedObj == null) )
{
    
trace("SharedObject geladen!");
    
    if (
mySharedObj.data.counter == null) {
        
mySharedObj.data.counter 0;
    } else {
        
mySharedObj.data.counter++; // hier wird das SO gelesen und geschrieben!
    
}
    
    
trace("\tcounter: " mySharedObject.data.counter);
}  else {
    
trace("SharedObject konnte nicht angelegt werden");

__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 23-07-2008, 10:10   #15 (permalink)
Hardstyle DJ
 
Benutzerbild von djdwarf
 
Registriert seit: Nov 2004
Ort: Hamburg
Beiträge: 622
Zitat:
Zitat von Janoscharlipp Beitrag anzeigen
Ich sehe nicht, dass du jemals etwas in das SharedObject schreibst, wie soll dann was rauskommen?
Sorry, wie ich oben schrieb, habe ich mich des gleichen scripts bedient, habs desshalb weggelassen.

Also:
PHP-Code:
 // Beispieldaten deklarieren
var myTestObj = new Object();
myTestObj.num 4321;
myTestObj.str "Dies ist ein Teststring";
myTestObj.bol true;
myTestObj.arr = ["Thomas""Lukas""Franz""Max"];

pfad "das/ist/ein/test";
// SharedObject wird erzeugt
var  mySharedObj SharedObject.getLocal("meineDaten");

speichern();

// Funktion speichern
function speichern()
{
  
// das Test-Objekt wird nun der SharedObject.data-Eigenschaft zugewiesen
  
mySharedObj.data.myObj myTestObj;
  
  
// Größe unseres SharedObject ermitteln
  // getSize() / 1024 = KByte
  // wir geben 15 KByte dazu um nicht immer Platz fordern zu müssen.
  // muss man nicht machen
  
var myKB Math.ceilmySharedObj.getSize() / 1024)+15;
  
trace("Speicherplatz-Größe in KByte: " myKB);
  
  
// Rückgabewert von flush() und SharedObject speichern
  // myKB *1024 um wieder auf Byte zu kommen
  
var tmp mySharedObj.flush(myKB 1024);
  
  
// wenn die Rückgabe von flush() ...
  
if (tmp)
  {
    
//... true ist: erfolgreich
    
trace("Speichern erfolgreich");
  }else if ( 
tmp == "pending")
  {
    
//... "pending" ist: Flash fordert mehr speicher
    
trace("Es wird mehr Speicherplatz benötigt");
  }else if(!
tmp)
  {
    
//... false ist: Ist das Speichern nicht erlaubt
    
trace("Keine Speicherberechtigung! Bitte 'Never' unter lokale Einstellungen demarkieren.");
    
// öffnen des Dialogfensters
    
System.showSettings(1);
  }


  
// jetzt der Event-Handler onStatus()
  // wird aufgerufen wenn flush() "pending" zurückgibt
  // onStatus() deklarieren und infoObject nicht vergessen.
  
mySharedObj.onStatus = function(infoObject)
  {
    
// Hat User genügend Speicherplatz zur Verfügung gestellt?
    
if (infoObject.code == "SharedObject.Flush.Success")
    {
      
//User hat genügend Speicherplatz zur Verfügung gestellt
      
trace("Genügend Speicherplatz erhalten. Speichern erfolgreich");
    }else if (
infoObject.code == "SharedObject.Flush.Failed")
    {
      
//User hat nicht genügendSpeicherplatz zur Verfügung gestellt
      
trace("Nicht genügend Speicherplatz erhalten. Speichern Fehlgeschlagen");
    }
  }


Anschließend erhalte ich in diesem Order:

HTML-Code:
C:\Dokumente und Einstellungen\*nutzer*\Anwendungsdaten\Macromedia\Flash Player\#SharedObjects\TL4SRCDX\localhost\xampp\htdocs\entwicklung\bastel\flash_cookies\cookies_write.swf
die Datei: meineDaten.sol

inhalt der Datei:

HTML-Code:
 ¿   ’TCSO      
meineDaten     myObj num @°á      str Dies ist ein Teststring bol arr    0 Thomas 1 Lukas 2 Franz 3 Max
Sollten also Daten vorhanden sein.


Wenn ich dein Script einfach mal laufen lasse erhalte ich:

HTML-Code:
"SharedObject konnte nicht angelegt werden"

Also, irgendwas läuft hier falsch o.O



EDIT: ach so, ist ja gar kein Object erstellt. hab deinem Script mal die Zeile
PHP-Code:
var  mySharedObj SharedObject.getLocal("counter"); 
vorrangestellt. Trace Ausgabe:
HTML-Code:
SharedObject geladen!
	counter: undefined

Geändert von djdwarf (23-07-2008 um 10:14 Uhr)
djdwarf ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele