Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-03-2005, 13:35   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 106
Übergabe von Variablen

Hallo

Ich sehe den Wald vor lauter Bäumen nicht...

In einem Bestellformular soll während der Mengeneingabe gleichzeitig im Feld "gesamt" die Gesamtzahl erscheinen. Als Beispiel.

Dazu habe ich im ersten Frame folgendes as geschrieben:

nebel = "";
mord = "";
Number(nebel);
Number(mord);
total = nebel+mord;
if (total>=0) {
gotoAndStop(2);
}

Im zweiten dieses:

gesamt.text = total;
stop();

Aber es funktioniert nicht. Falls der Fehler woanders liegt, habe ich die fla angehängt.

Ich hoffe, das mir einer das Brett vom Kopf nehmen kann :-))

Gruß
Libuda
Angehängte Dateien
Dateityp: zip beispiel.zip (2,2 KB, 5x aufgerufen)
libuda ist offline   Mit Zitat antworten
Alt 20-03-2005, 16:54   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ActionScript:
  1. _root.total.restrict = "0-9";
  2. _root.total.maxChars=3;
  3. _root.mord.restrict = "0-9";
  4. _root.mord.maxChars=3;
  5. //
  6. function fSumme() {
  7.     var vSum = 0;
  8.     vSum += (_root.nebel.text) ? Number(_root.nebel.text) : 0;
  9.     vSum += (_root.mord.text) ? Number(_root.mord.text) : 0;
  10.     _root.total.text = (vSum) ? vSum : " ";
  11. }
  12. _root.nebel.onChanged = fSumme;
  13. _root.mord.onChanged = fSumme;
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (20-03-2005 um 16:55 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 21-03-2005, 10:03   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 106
Danke hgseib, aber das klappt nicht.

Bei "Nebel" und "Mord" erscheint konstant eine 0, gesamt zeigt gar nichts an...

Bin jetzt soweit, dass ich mit:

on (keyPress "<Enter>") {
gesamt = mord;
}

... nach "Enter" das Ergebnis in gesamt stehen habe. Das gleiche soll jetzt noch bei betätigen der linken Maustaste passieren. Dann muss ich "nur" noch mehere Variablen zusammenfassen und ausschließen, das Dezimalzahlen angezeigt werden...

Gruß
Libuda
libuda ist offline   Mit Zitat antworten
Alt 21-03-2005, 12:05   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
weil du "Nebel" sowohl als instanzname als auch als variablenname im selben textfeld drinn stehen hast. schmeiss den variablennamen raus - ist veraltete technik.
alle drei namen, die ich angegeben habe, beziehen sich eindeutiger weisse auf instanznamen!

und das du mit 2 frames arbeitest (vorallem wie) ist auch unfug. lösch bitte den letzten.

----------
versuch mal mit dem debugger von flash klar zu kommen:
- vor eine programmzeile klicken (==roter punkt)
- im menü "debuggen" aufrufen
- auf den grünen pfeil klicken
- im swf etwas machen (der programmablauf hält beim roten punkt)
- links die objekte auswählen, variable, interne... mal alles ansehen!
mit dem debugger kann man sein programm schrittweisse abarbeiten und in
alle variable reinsehen. also genau das richtige auch für einsteiger!
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (21-03-2005 um 12:14 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 21-03-2005, 12:28   #5 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 106
Danke. Ich habe geglaubt, es wäre in dem Fall egal, ob ich den Instanznamen oder die Variable anspreche. Der zweite frame war Quatsch, stimmt.

Ich habe es zwischenzeitlich mit meinem as hinbekommen, da ich es auch verstehen möchte, was bei deinem nicht der Fall ist. So weit bin ich noch nicht.

Der einzige Haken ist noch, das ich keine Dezimalzahlen hinbekomme. Muss doch möglich sein, das in meinem einfachen as zu realisieren:

on (keyPress "<Enter>") {
gesamt = Number(mord)+Number(nebel);
summe = (mord*11)+(nebel*11);
}

11 ist der jeweilige Preis, der aber eigentlich bei 11,80 liegt. Ich habe es schon mit parseFloat und parseInt versucht, aber ohne Erfolg.
Dann wäre es noch schön, wenn das ganze zusätzlich noch bei drücken der linken maustaste klappt.

Gruß und vielen dank für deine Mühe
Libuda
libuda ist offline   Mit Zitat antworten
Alt 21-03-2005, 13:11   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
debuggen und nachsehen, was in den variablen drinn ist und viele
trace(xxx);
einbauen, hilft weiter!

"..weit bin ich noch nicht.."
mit der vorlage kannst du jeden befehl nachlesen:
ActionScript:
  1. _root.total.restrict = "0-9"; // erlaubt nur ziffern als eingabe
  2. _root.total.maxChars=3;    // maximal nur 3 ziffern
  3. // hätte übrigens nicht total sondern nebel heissen müssen
  4. // ...
  5. function fSumme() {
  6.     var vSum = 0;
  7.     // unschön, für jede position einen eigenen namen zu vergeben
  8.     // bei den 2 eingaben wird es ja nicht bleiben
  9.     // besser ist für sowas array's zu benützen,
  10.     // bzw. namens-folgen wie mord1, mord2, ...
  11.     // (wenn, dann natürlich überall die namen ändern)
  12.     // meine schreibweisse ist für sowas angedacht gewesen
  13.     for (i=1; i<=2; i++) {
  14.       vSum += (_root['mord'+i].text) ? Number(_root['mord'+i].text) : 0;
  15.       // ist das selbe wie:
  16.       // if (_root.nebel.text!="" || _root.nebel.text!=0)
  17.       // { vSum += Number(_root.nebel.text);
  18.       // }
  19.     }
  20.     _root.total.text = (vSum) ? vSum : " ";
  21. }
  22. // setze das event. ruft die function auf, wenn in "nebel" etwas reingeschrieben wird.
  23. // da brauchts keine extra taste dafür
  24. // für die ausgabe mit fixen nachkommastellen mal im forum suchen
  25. // da wurden wiederholt lösungen veröffentlicht.
  26. _root.nebel.onChanged = fSumme;
  27. // ..
  28.  
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (21-03-2005 um 13:13 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 21-03-2005, 14:12   #7 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 106
Okay, das macht wahrscheinlich Sinn. Ich werde es wohl so machen.
Obwohl ich dein as immer noch nicht richtig verstehe, vor allem diese Zeile:
for (i=1; i<=2; i++) {
vSum += (_root['mord'+i].text) ? Number(_root['mord'+i].text) : 0;

Was ist i? Wo ist diese Variable definiert? Wo ist das next zu dem for und wozu eckige Klammern? Ich glaube, das lerne ich nie, auch wenn ich erst vor zwei Wochen angefangen habe.

Aber ich kann ja nur lernen, wenn ich auch einfache Sachen programmieren kann. Ich hänge mal eine fla dran, die ich nicht begreife.
Es läuft im Prinzip gut, aber nur, wenn ich zu "Kopfweiden" noch min. einen Artikel eingebe. Obwohl ich alles exakt gleich gemacht habe.

Wäre nett, wenn du dir das mal ansiehst und mir sagen könntest, wo der Fehler liegt.

Gruß und nochmals Danke für deine Mühe
Libuda
Angehängte Dateien
Dateityp: zip Bestellung1.zip (2,5 KB, 5x aufgerufen)

Geändert von libuda (21-03-2005 um 14:58 Uhr)
libuda ist offline   Mit Zitat antworten
Alt 21-03-2005, 15:32   #8 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
"..Was ist i? Wo ist diese Variable definiert? Wo ist das next zu dem for und wozu eckige Klammern? Ich glaube, das lerne ich nie.."

also gundlegendste elemente wie z.b. eine for-schleife sollte man schon können. wenn nicht, da ist das forum der falsche platz (ist genauso wie jemand, der nicht lesen kann - dem können wir HIER auch nicht helfen). da versuchs bitte mal mit einem buch bzw. es gibt schulungen.
und programmieren ist auch nicht mehr so exotisch wie vor 25 jahren. also in deiner umgebung sollte es schon jemanden geben, der programmieren kann. lass dir von denen mal die elementarsten grundbegriffe der programmiererei erklären.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 22-03-2005, 10:49   #9 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 106
Okay, da habe ich mich jetzt reingelesen und es einigermaßen verstanden.
Ich habe hier mehrere Handbücher und verfahre nach der "learning by doing" Methode. Wenn ich mir zunächst alle Bücher durchlese, habe ich die Hälfte vergessen, sobald ich beginne. Der Rest der HP steht im groben und funktioniert. Ich möchte auch nicht Programmierer werden, sondern nur für meine Zwecke eine einzige HP mit Flash basteln. Logisch, das ich dafür einige Grundkenntnisse benötige, darum bemühe ich mich ja.
Ich habe dein Script wie gesagt mittlerweile in groben Zügen nachvollziehen können und eingebaut. Es ist mir gelungen, es anzupassen und es klappt. Mit arrays habe ich mich noch nicht ausreichend beschäftigt, da bei meinem Projekt im Schnitt ein Artikel pro Jahr hinzukommt. Da kann ich momentan noch einmal jährlich ein paar Zeilen ändern. Nun nochmal zum script:

Ich möchte noch in einem Feld den Gesamtpreis und dann analog dazu die Märchensteuer in einem anderen Feld ausgegeben haben. Naiverweise habe ich geglaubt, dein as dazu einfach nur geringfügig modifizieren zu müssen, aber das klappt nicht, jedenfalls nicht so:

_root.nebel.restrict = "0-9";
_root.nebel.maxChars = 3;
_root.mord.restrict = "0-9";
_root.mord.maxChars = 3;
_root.weiden.restrict = "0-9";
_root.weiden.maxChars = 3;
//
function fSumme() {
var vSum = 0;
vSum += (_root.nebel.text) ? Number(_root.nebel.text) : 0;
vSum += (_root.mord.text) ? Number(_root.mord.text) : 0;
vSum += (_root.weiden.text) ? Number(_root.weiden.text) : 0;
_root.gesamt.text = (vSum) ? vSum : " ";
}
function pSumme() {
var pSum = 0;
pSum += (_root.nebel.text)*11.80 ? Number(_root.nebel.text) : 0;
pSum += (_root.mord.text)*11.80 ? Number(_root.mord.text) : 0;
pSum += (_root.weiden.text)*9.00 ? Number(_root.weiden.text) : 0;
_root.preis.text = (pSum) ? pSum : " ";
}


_root.nebel.onChanged = fSumme;
_root.mord.onChanged = fSumme;
_root.weiden.onChanged = fSumme;

Vermutlich versuche ich, einen String zu multiplizieren. Muss ich noch jede Variable vorher mit: Number(mord) umwandeln oder steht der Preis falsch, oder...???

Gruß
Libuda
libuda 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 07:44 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele