Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-04-2004, 12:55   #1 (permalink)
ff-User
 
Registriert seit: Mar 2004
Ort: Kölle
Beiträge: 62
Probleme mit local SharedObjects

Hey@all,
ich bin gerade dabei mit local SharedObjects einen Warenkorb eines Onlineshops in Flash zu realisieren. Dabei tritt leider ein kleiner Fehler auf, den ich alleine nicht beheben kann.
Die Artikel werden mit folgenden AS-Auszügen abgespeichert...

ActionScript:
  1. local = SharedObject.getLocal("Test", "/");
  2. system.useCodepage = true;
  3.  
  4. if(local.data.warenkorb == undefined){
  5.         local.data.warenkorb = [[],[]];
  6.         local.data.counter = 0;
  7. }else{
  8.     warenkorb = local.data.warenkorb;
  9.     counter = local.data.counter;
  10. }
  11. local.flush();
  12. stop();

ActionScript:
  1. on (release) {
  2.     _parent._parent._parent.local.data.warenkorb.push([id, name, anzahl, preis, mwst]);
  3.     _parent._parent._parent.local.data.counter = _parent._parent._parent.local.data.counter + 1;
  4.     _parent._parent._parent.local.flush();
  5. }

...und dann ausgelesen:

ActionScript:
  1. aktuell = 0;
  2. abstand = 0;
  3. for(i=0; i< _parent._parent.local.data.counter; i++){
  4.     scrollmov2.attachMovie("zeile2", "zeile"+aktuell, 10+aktuell);
  5.     setProperty("scrollmov2.zeile" + aktuell, _y, abstand);
  6.     scrollmov2["zeile"+aktuell].id = _parent._parent.local.data.warenkorb[i][0];
  7.     scrollmov2["zeile"+aktuell].name = _parent._parent.local.data.warenkorb[i][1];
  8.     scrollmov2["zeile"+aktuell].anzahl = _parent._parent.local.data.warenkorb[i][2];
  9.     scrollmov2["zeile"+aktuell].preis = _parent._parent.local.data.warenkorb[i][3];
  10.     scrollmov2["zeile"+aktuell].preistotal = _parent._parent.local.data.warenkorb[i][2] + _parent._parent.local.data.warenkorb[i][3];
  11.     aktuell++;
  12.     abstand=abstand+25;
  13. }
  14. stop();

Fehlerbeschreibung:

Die Details der ersten zwei Artikel, die ich abspeichere werden im Warenkorb nur mit undefined dargestellt. Wenn ich den dritten Artikel einfüge, wird der ursprünglich zuerst abgespeicherte Artikel an Stelle3, beim vierten Artikel der ursprünglich zweite Artikel usw. angezeigt.
Es werden also nach den ersten zwei Dummyartikeln alle Artikel richtig, aber um zwei Stellen versetzt angezeigt.

Kann mir jemand helfen, verzweifle langsam?

Viele Grüße
Sebastian
dubidu ist offline   Mit Zitat antworten
Alt 13-04-2004, 13:31   #2 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Ort: D'dorf
Beiträge: 765
hi,
ActionScript:
  1. if(local.data.warenkorb == undefined){
  2.         local.data.warenkorb = [[],[]]; // <-- ???
  3.         local.data.counter = 0;
  4. }
Damit legst du direkt zwei leere Arrays in warenkorb an (warenkorb[0] und warenkorb[1]).

Ist doch logisch, dass alle Elemente, die du später in das Array pushed einen Index >= 2 haben.

counter könntest du dir übrigens auch sparen, indem du stattdessen local.data.warenkorb.length benutzt.

gruß,
roman
romän ist offline   Mit Zitat antworten
Alt 13-04-2004, 19:51   #3 (permalink)
ff-User
 
Registriert seit: Mar 2004
Ort: Kölle
Beiträge: 62
Vielen Dank, romän!

Bin davon ausgegangen, dass man ein zweidimensionales Array so anlegt... Jetzt klappt's!

Ich hätte da noch eine Frage:

Wie kann ich das Produkt von zwei Arraywerten erhalten, mit folgendem AS erhalte ich im dyn. Textfeld "preistotal" nur NaN :

ActionScript:
  1. scrollmov2["zeile"+aktuell].preistotal = _parent._parent.local.data.warenkorb[i][2] * _parent._parent.local.data.warenkorb[i][3];


// Habe heute versehentlich ein crossposting getätigt, kann ich das auch wieder löschen oder macht das der Admin?

Danke&greetz
dubidu
dubidu ist offline   Mit Zitat antworten
Alt 13-04-2004, 20:27   #4 (permalink)
alien
 
Benutzerbild von Smirgel
 
Registriert seit: May 2002
Ort: Colonia
Beiträge: 7.597
löschen kannst du wenn du auf ändern gehst, dann oben links anhaken und oben rechts löschen klicken.
den thread hatte ich heute mittag schon geschlossen und er wird eh morgen gelöscht

grüße.
smirgel
__________________
bei fragen, fragen.
Smirgel ist offline   Mit Zitat antworten
Alt 13-04-2004, 20:55   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Ort: D'dorf
Beiträge: 765
hi,

kann es sein, dass deine Preise als String in der Form: "23,99" vorliegen?
Damit kann Flash nicht rechnen (erwartet die amerikanische Form von Dezimalzahlen mit Punkt als Trennzeichen).
Dann versuch's mal so
ActionScript:
  1. // lokale Variable [B]d[/B] mit Referenz auf warenkorb definieren
  2. // spart Tipparbeit und ist evtl. schneller
  3. var d = _parent._parent.local.data.warenkorb;
  4. scrollmov2["zeile"+aktuell].preistotal = d[i][2] * (d[i][3].split(",").join("."));
Die letzte Zeile ersetzt das Dezimal-Komma durch einen Dezimal-Punkt (also "23,99" -> "23.99") und führt die Multiplikation aus.
Falls du auch noch einen Tausender-Trennpunkt hast müsste die Zeile so aussehen:
ActionScript:
  1. scrollmov2["zeile"+aktuell].preistotal = d[i][2] * (d[i][3].split(".").join("").split(",").join("."));
z.B. aus "1.234,99" -> "1234.99" machen und Multiplikation ausführen.

gruß,
roman
romän ist offline   Mit Zitat antworten
Alt 13-04-2004, 22:44   #6 (permalink)
ff-User
 
Registriert seit: Mar 2004
Ort: Kölle
Beiträge: 62
Perfekt! Klappt einwandfrei!!! Ich danke Dir, romän.
Da muss man erstmal drauf kommen...

Das waren fürs Erste meine Fragen.

Nochmals 1000dank
dubidu
dubidu 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 02:48 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele