Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-07-2006, 10:58   #1 (permalink)
man lernt immer dazu
 
Benutzerbild von dabinjo
 
Registriert seit: Dec 2003
Ort: Freiburg
Beiträge: 442
verschachteltes array auslesen

salü

ich friggel grad an einem primitiven warenkorb rum.
jetzt stehe ich vor zwei kleinen problemchen.
in der schleife werden auch die "undefined" objekte ausgegeben und das kann man in einem warenkorb ja wohl nicht brauchen.
ich weis nicht wie ich die preise zusammen rechne...
PHP-Code:
var produkt1:Array =["office pro"1234450]
var 
produkt2:Array =["steuer pro"1234450]
var 
produkt3:Array =["recht pro"1234450]
var 
produkt4:Array =["finanz pro"1234450]



var 
warenkorb = new Array()

button.onPress=function(){
    
warenkorb.push(produkt1)
    
}


button1.onPress=function(){
    
warenkorb.push(produkt2)
    
}

button2.onPress=function(){
    
warenkorb.push(produkt3)
    
}

button3.onPress=function(){
    
warenkorb.push(produkt4)
    
    }
check.onPress=function(){
reindamit=3
preis
=2

for (var i=0;i<=reindamit;i++){
    
    var 
liste=container.attachMovie("list","list"+i,i)
    
liste._y=i*25
    trace
(warenkorb[i])
    
liste.artikelname.text=warenkorb[i][0];
    
liste.preis.text=warenkorb[i][preis];
    
gesamt.text=warenkorb[i][preis];
        
};
}; 

ich habe hier vier bücher aber leider geht keines auf verschachtelte arrays ein...

heisse grüsse aus freiburg

daniel
dabinjo ist offline   Mit Zitat antworten
Alt 25-07-2006, 11:02   #2 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
hm also so wild ist doch da überhaupt nichts verschachtelt....
du hast ein array warenkorb und möchtest die preise zusammenrechnen. diese stehen nunmal an zweiter stelle in jedem element.
ActionScript:
  1. function getPreis (warenkorb) {var preis = 0;
  2.    for (var i=0; i<warenkorb.length; i++) {
  3.       preis += warenkorb[i][2];
  4.    }
  5.    return preis;
  6. }
  7.  
  8. //aufruf:
  9. var preis = getPreis(warenkorb);
gruß janosch





edit
Zitat:
Zitat von dabinjo
ich habe hier vier bücher aber leider geht keines auf verschachtelte arrays ein...
willst du sie deshalb verkaufen ("office pro", "steuer pro", "recht pro", "finanz pro")

Geändert von janoshnosh (25-07-2006 um 11:06 Uhr)
janoshnosh ist offline   Mit Zitat antworten
Alt 25-07-2006, 11:04   #3 (permalink)
Flash it baby!
 
Registriert seit: Feb 2003
Beiträge: 287
janoshnosh war schneller...
Da_Judge ist offline   Mit Zitat antworten
Alt 25-07-2006, 11:09   #4 (permalink)
man lernt immer dazu
 
Benutzerbild von dabinjo
 
Registriert seit: Dec 2003
Ort: Freiburg
Beiträge: 442
he,he
hab mich schon gewundert warum da nur was von exel und kalkulation steht...
dabinjo ist offline   Mit Zitat antworten
Alt 25-07-2006, 11:54   #5 (permalink)
man lernt immer dazu
 
Benutzerbild von dabinjo
 
Registriert seit: Dec 2003
Ort: Freiburg
Beiträge: 442
noch was...wie kann ich das undefined auschliessen??
dabinjo ist offline   Mit Zitat antworten
Alt 25-07-2006, 11:57   #6 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
undefined im fall dass ein artikel ohne preis im warenkorb liegt?
ActionScript:
  1. preis += warenkorb[i][2] || 0;
janoshnosh ist offline   Mit Zitat antworten
Alt 25-07-2006, 12:16   #7 (permalink)
man lernt immer dazu
 
Benutzerbild von dabinjo
 
Registriert seit: Dec 2003
Ort: Freiburg
Beiträge: 442
nein...die schleife legt auf jeden fall 4 objekte in den warenkorb, ob sie jetzt als array definiert sind oder nicht. dh wenn ich auf den check button drücke ohne etwas in das warenkorb-array gepushed zu haben, bekomme ich vier ausgabefelder mit undefined. das würde ich gerne vermeiden...
dabinjo ist offline   Mit Zitat antworten
Alt 25-07-2006, 13:01   #8 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
Zitat:
Zitat von janoshnosh
ActionScript:
  1. var preis = 0;
  2.    for (var i=0; i<warenkorb.length; i++) {
  3.       preis += warenkorb[i][2];
  4.    }
diese schleife läuft aber genau so oft, wie viele elemente in dem array warenkorb liegen. warenkorb.length ist nämlich gleich null, wenn kein element gepusht wurde, und dann läuft die schleife auch null mal (denn 0 ist nie echt kleiner als 0).

um dennoch undefined abzufangen siehe die lustige notation aus beitrag #6.

gruß janosch
janoshnosh ist offline   Mit Zitat antworten
Alt 25-07-2006, 13:46   #9 (permalink)
man lernt immer dazu
 
Benutzerbild von dabinjo
 
Registriert seit: Dec 2003
Ort: Freiburg
Beiträge: 442
das mit den preisen ist klar. allerdings ist hier noch eine schleife :

PHP-Code:
reindamit=4
for (var i=0;i<=reindamit;i++){ 
     
    var 
liste=container.attachMovie("list","list"+i,i
    
liste._y=i*25 
    trace
(warenkorb[i]) 
    
liste.artikelname.text=warenkorb[i][0]; 
    
liste.preis.text=warenkorb[i][preis]; 
    
gesamt.text=warenkorb[i][preis]; 
         
}; 
}; 
und die beweirkt das auf jeden fall 5 objekte in das warenkorbarray geladen werden. ich bekomme es nicht hin nur die gepushten objekte anzuzeigen. wenn ich auf button 1 drücke sollte eigentlich nur ein objekt im warenkorb liegen
dabinjo ist offline   Mit Zitat antworten
Alt 25-07-2006, 13:58   #10 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Äh, welcher Teil von "warenkorb.length" erschließt sich dir nicht?
Die Frage ist doch schon längst geklärt?
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 25-07-2006, 14:02   #11 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
ja ich glaube auch du machst dir das leben zu schwer:
ersetze mal
Code:
reindamit=4
durch
Code:
reindamit=warenkorb.length-1
dann müsste alles klar sein.

gruß janosch
janoshnosh ist offline   Mit Zitat antworten
Alt 25-07-2006, 14:37   #12 (permalink)
man lernt immer dazu
 
Benutzerbild von dabinjo
 
Registriert seit: Dec 2003
Ort: Freiburg
Beiträge: 442
tja eigentlich sollte man sowas leuten überlassen die wenigsten ein bischen ahnung von programmierung haben

danke janosch
dabinjo ist offline   Mit Zitat antworten
Alt 25-07-2006, 16:26   #13 (permalink)
man lernt immer dazu
 
Benutzerbild von dabinjo
 
Registriert seit: Dec 2003
Ort: Freiburg
Beiträge: 442
soooooooooorry

ist mir ja schon peinlich so oft aufzukreuzen aber es hapert schon wieder (ein bischen). mit dem "reindamit=warenkorb.length-1" geht es zwar aber wenn nur ein produkt im korb liegt wird undefined ausgegeben...

ich habe den code mal zusammengeführt und kommentiert...
PHP-Code:
/////////////produkte//////////////////////

var produkt1:Array =["office pro"1234450]
var 
produkt2:Array =["steuer pro"1234450]
var 
produkt3:Array =["recht pro"1234450]
var 
produkt4:Array =["finanz pro"1234450]


//////////////der warenkorb wird erstellt
var warenkorb = new Array()

//////////////bereich für die produkt buttons
back.inware1.onPress=function(){
    
warenkorb.push(produkt1)
    }


    
//////////////////////texfelder werden formatiert
beweg=true;
warenkorb_mc.form.gesamt_feld.gesamt_txt.autoSize=true;
warenkorb_mc.form.gesamt_feld.gesamt_txt.align "right"


////////////////////der warenkorb wird gecheckt und gefüllt
warenkorb_mc.form.wbutton.onPress=function(){
    
reindamit=warenkorb.length-1

    
if(beweg==true){ ///////warenkorb wird ausgefahren
        
warenkorb_mc.form.tween("_y",-410,0.6,"easeOutback");
        
beweg=false;
};


for (var 
i=0;i<=reindamit;i++){
    
    var 
liste=warenkorb_mc.form.container.attachMovie("list","list"+i,i)
    
trace(warenkorb[i])
    
liste._y=i*15
    liste
.artikelname.text=warenkorb[i][0];
    
liste.preis.text=warenkorb[i][2]+" euro";
    
warenkorb_mc.form.gesamt_feld.gesamt_txt.text=preis+" Euro"
    
trace(preis)
    var 
preis getPreis(warenkorb); /////////der preis wird ausgerechnet
        
    
}
};
//////////////die funktion um den preis ausrechnen wird erstellt
function getPreis (warenkorb) {
var 
preis 0;
for (var 
i=0i<warenkorb.lengthi++) {
preis += warenkorb[i][2] || 0;
    }
return 
preis;
};

///////warenkorb wird eingefahren
warenkorb_mc.form.wbutton.onRelease=function(){
    if(
beweg==false){
warenkorb_mc.form.tween("_y",0,0.6,"easeInBack");
beweg=true;
    }
    
}; 
ich packs ned...
dabinjo 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 14:27 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele