| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: May 2009
Beiträge: 13
| AS3: Array nach Variable durchsuchen
Hallo, ich versuche mich gerade in das Thema Array reinzuarbeiten und habe hierzu ein Forumsbeispiel angepasst... Aber irgendwo scheint noch ein Fehler zu existieren. Leider springt mein AS immer gleich zu gotoAndPlay ?! Es exitiert ein leeres Array: array_warenkorb Das Array var array_warenkorb:Array = new Array(); und die Variablen wurden Global gesetzt. Wird nun Button x gedrückt wird u.g. Funktion ausgeführt: Ziel: Wenn wkproduktei nicht in array dann füge wkproduktei mit push hinzu PHP-Code: |
| | |
| | #2 (permalink) |
| ~~~~~~~~~~~~ Registriert seit: May 2002 Ort: AUSTRIA (OÖ)
Beiträge: 3.298
| ActionScript:
Wenn du gerade mit Array anfängst würde ich dir raten die Doku mal durchzuarbeiten, vieles muss man nämlich gar nicht selbst machen weils das schon gibt ![]() http://help.adobe.com/de_DE/AS3LCR/F...#indexOf%28%29 lg
__________________ --- :P --- Blog Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker Geändert von _geo_ (26-12-2010 um 18:18 Uhr) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: May 2009
Beiträge: 13
|
Funktioniert ... Vielen Dank ! Leider finde ich die online Doku seit CS4 etwas ... gewöhnungsbedürftig. Finde das ganze auch nicht so gut Beschrieben wie ichs gerne hätte da ich vieles einfach über F1 und Suche nicht finde. Ich denke, damals im MX Studio, war das ganze etwas besser und die Beispiele, na waren einfach mehr ... Eventuell liegt das aber auch die Umgewöhnung auf AS3 ! Aber es gibt ja noch gute Bücher zu dem Thema :-) |
| | |
| | #4 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Ja, es liegt an der Umgewöhnung. Am besten die API Dokumentation herunterladen. Diese Art der API wird seit Jahren verwendet... It's Provence so to say.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: May 2009
Beiträge: 13
| Erweiterung auf Mehrdimensionale Arrays
Jetzte möchte ich das ganze wie folgt erweitern: Bei jedem Aufruf der Funktion soll überprüft werden ob wkproduktei schon existiert ... wenn nicht wird neues array angelegt. Leider geht genau diese überprüfung nicht ? Ergabnis laut trace je funktionsaufruf: 1. Aufruf: Vogelfutter, 5.00,1,5.00 2. Aufruf: Vogelhaus, 45.00,1,45.00 3. Aufruf: Vogelfutter, 5.00,1,5.00 Vogelhaus, 45.00,1,45.00 Vogelfutter, 5.00,1,5.00 <- sollte ja nicht mehr erscheinen da schon angelegt -> if (array_warenkorb.indexOf(wkproduktei) == -1 ) ! PHP-Code: |
| | |
| | #7 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
indexOf sucht in einem array. deine infos liegen aber jetzt in einem array, das sich in einem array befindet. du suchst am falschen ort! empfehlung: (das hatte ich doch letztens schonmal empfohlen) nimm ID's (namen geht auch können sich aber ändern bzw. werden übersetzt, ID's sind besser, weil die bleiben immer unverändert - ein fels in der brandung) und nimm objekte anstatt arrays. und deine struktur ist falsch! Code: // liste aller zur verfügung stehender produkte
// das ist typisch ein objekt: man sucht nicht das 12. sondern ein bestimmtes produkt
// wenn hier überhaupt eine anzahl, dann verpackungseinheiten, preisstaffeln
// aber auf garkeinen fall eine kaufmenge!
// könnte ja sein, das man einen sittich in rot und einen in blau kaufen will
var produkt:Object = {}; // wenn du OOP kannst, dann eine eigene klasse erstellen
produkt['4712']= {name:'Vogelfutter', preis:5.00};
produkt['villa']= {name:'Vogelhaus', preis:45.00};
produkt['sittich']= {name:'Vogel', preis:1.50, spezial:'aufblasbar', color:['rot','grün','blau']};
//
// warenkorb
// der ist typisch ein array***: man kauft n-objekte (welche ist erstmal egal)
// zum produkt-angebot kann es mehrere warenkörbe geben, prod & wk gehört getrennt
var warenkorb:Array = []; // eigene klassen programmieren ist besser, ist klar
warenkorb.push({produktID:'4712', anzahl:13});
warenkorb.push({produktID:'sittich', anzahl:1, color:'blau'});
// produkt:'4712' anstatt der ID könnte man auch eine referenz auf das produkt angeben
// nach möglichkeit nichts doppelt speichern! alle infos aus produkt gehören nicht in den warenkorb
// es gibt fälle, das angebot und kauf zeitlich so weit auseinander liegen, das sich die preise
// ändern könnten. dann muss natürlich eine kopie des angebotenen preises erstellt werden ...
//
// doppelt? hier muss man einfach ein programm schreiben, das die liste durchgeht und sucht.
// am beispiel mit den sittich-farben soll verdeutlicht werden, man kann nicht immer
// nur nach einem wert testen z.b.
function addWarenkorb(id:String, anzahl:int):void {
var doppelt:Boolean=false;
for (var s:String in warenkorb) {
if (warenkorb[s].produktID == id){ // gibt es schon, anzahl hat sich geändert
doppelt=true;
warenkorb[s].anzahl = anzahl;
continue;
}
}
if (!doppelt) { // ist neu
warenkorb.push({produktID:id, anzahl:anzahl});
}
}
//
// summen berechnen macht man per programm. oder hast du angst,
// dass dein 3 gigaherz rechner nicht schnell genug den gesamtbetrag errechnen könnte? ;-)
// wenn man zwischenwerte speicher, dann muss sicher gestellt sein, das auch immer
// bei allen änderungen alle betroffenen zwischenwerte neu berechnet werden.
// da ist es doch sicherer und einfacher die summe komplett neu zu berechnen. z.b.
function kaufsumme():Number {
var sum:Number=0;
for (var s:String in warenkorb) {
var id:String = warenkorb[s].produktID;
var prod:Object = produkt[id];
sum += warenkorb[s].anzahl * prod.preis;
}
return sum;
} es gibt natürlich immer gründe etwas anders zu machen, bzw. es gibt nicht eine lösung für alles, sondern für eine sache gibt es immer mehrere lösungen. kommt immer auf die umstände drauf an. wenn man z.b. garantiert jedes produkt nur einmal kaufen kann (unterschiedliche anzahl, aber das produkt nur einmal) in diesem falle wäre objekt günstiger, da man dann wie bei den produkten auch nach der ID suchen kann. d.h. bei objekten lässt man flash suchen und braucht sich nicht selbst darum kümmern. dito. das trennen von produktliste und warenkorb. wenn's nur einen käufer gibt und wenn die produktliste recht klein ist, dann braucht man das nicht unbedingt zu trennen. dann unterscheidet man in der spalte 'kaufanzahl'. alle haben die kaufanzahl=0 ausser denen, die man kaufen will. ist klar. generell gilt die aussage: wenn's funktioniert fragt keiner mehr warum.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (30-12-2010 um 12:23 Uhr) |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: May 2009
Beiträge: 13
|
Ok, erst mal Danke. Leider habe ich mich mit Objekten noch nicht befasst und aus diesem Grund auch Arrays gewählt ... Dein Beispiel ist echt toll gemacht aber da muss ich mich erst mal durcharbeiten :-) Darum hielt ich die Arrays für am besten geeignet: Also der Kunde hat verschieden produkte zur Auswahl und klickt auf Warenkorb. Das Produkt existiert zum Beispiel nur als Produktbez. "Vogalhaus in gelb". Jetzt wir das in mein array_warenkorb[position0] geschrieben. Er kauft sich noch das Vogelfutter -> wandert auch in warenkorb aber array_warenkorb[position+1]. Ein trace von [positon0] würde also Vogelhaus, Euro, Anzahl, Summe ergeben. Ein trace von [positon1] würde also Fogelfutter, Euro, Anzahl, Summe ergeben. Aufgrund der Anzahl [position+x] oder der ID/Produktbezeichnung wird dann je ein mc zur laufzeit erzeugt welcher alles nochmal darstellt und in welchem sich die Bestellmenge ändern lässt. Dann wird nach klick auf bestellen alles in eine Email gepackt und versendet ... Geändert von Adama74 (30-12-2010 um 13:15 Uhr) |
| | |
| | #9 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
"..Bei jedem Aufruf der Funktion soll überprüft werden ob wkproduktei schon existiert ..." nochmal: if (array_warenkorb.indexOf(wkproduktei) == -1 ) // das würde nur gehen, wenn dein array aus lauter wkproduktei bestehen würde. z.b. array_warenkorb = [wkproduktei1, wkproduktei2, wkproduktei3, ..] // dein array besteht aber aus lauter array's array_warenkorb = [ [wkproduktei,..], [wkproduktei,..], [wkproduktei,..], ] hier kannst du nicht mehr indexOf benützen, sondern du musst dir ein programm schreiben wie beispiel: function addWarenkorb(id:String, anzahl:int):void {
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Dec 2010
Beiträge: 50
|
wie kann ich diesen produktID löschen wie unten geht nicht ? for (var s:String in warenkorb) { if (warenkorb[s].produktID == id){ delete warenkorb[s].produktID; // oder delete warenkorb[s].id; continue; } } [QUOTE=hgseib;1970749hier kannst du nicht mehr indexOf benützen, sondern du musst dir ein programm schreiben wie beispiel: function addWarenkorb(id:String, anzahl:int):void {[/QUOTE] |
| | |
| | #12 (permalink) |
| Neuer User Registriert seit: Jul 2003
Beiträge: 1.197
| www.airdoc.be die Doku ging mir auch total auf die Nerven, das war früher besser. Aber probier mal www.airdoc.be Das ist eine AIR Anwendung, in die man kann sich auch noch andere Docs installieren (Papervision, PureMVC, etc.) Damit ist es fast wieder wie früher.
__________________ EDV = Ende Der Vernunft |
| | |
| | #13 (permalink) | |
| Neuer User Registriert seit: Jul 2003
Beiträge: 1.197
| Zitat:
ActionScript:
__________________ EDV = Ende Der Vernunft | |
| | |
| | #14 (permalink) | |
| Neuer User Registriert seit: Dec 2010
Beiträge: 50
|
das ist perpeckt !! muss jede probieren. die online Doku von Adobe ging mir auch total auf die Nerven. Zitat:
| |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| array, as3, durchsuchen, variable |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Variable mit php nach wort durchsuchen | Hundertwasser | Server-Seite allgemein | 3 | 22-01-2006 14:51 |
| Array nach spezifischem Wert durchsuchen | Argh | ActionScript 1 | 8 | 03-11-2004 16:46 |
| Array: durchsuchen => Variable ändern | johanness | ActionScript 1 | 14 | 20-01-2004 17:37 |
| array nach wort durchsuchen | icf | ActionScript 1 | 5 | 14-09-2002 20:48 |
| db nach variable aus formular durchsuchen | schorleschorsch | Flash und Datenbanken | 2 | 16-11-2001 10:06 |