Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-10-2005, 16:46   #1 (permalink)
Linksaußen
 
Benutzerbild von Fralle
 
Registriert seit: Jun 2003
Ort: Essen
Beiträge: 552
krumme Zahl

ActionScript:
  1. function giveWinnings() {
  2.     this.createEmptyMovieClip("giveToGuthaben", 200);
  3.     // Vorzeichen filtern und auf 0.1 bzw. -0.1 setzen
  4.     tencent = _root.win/Math.abs(_root.win)/10;
  5.     this.giveToGuthaben.onEnterFrame = function() {
  6.         trace(tencent+"  "+_root.win);
  7.         if (_root.win == 0) {
  8.             trace("BEZAHLT");
  9.             removeMovieClip(this);
  10.         } else {
  11.             _root.guthaben += tencent;
  12.             _root.win -= tencent;
  13.         }
  14.     };
  15. }
Mit dieser Funktion wollte ich einen Gewinnbetrag (_root.win) dem Guthaben (_root.guthaben) 10-Centweise (tencent) gutschreiben. Der Gewinn kann positiv oder negativ sein. Während der Gewinn dem Konto gutgeschrieben wird, soll er selbst auf null runtergezählt werden.
Das alles klappt auch soweit, nur er kommt nicht exakt auf null, das Output-Window gibt folgendes aus (bei _root.win = -0.5):
ActionScript:
  1. -0.1  -0.5
  2. -0.1  -0.4
  3. -0.1  -0.3
  4. -0.1  -0.2
  5. -0.1  -0.1
  6. -0.1  -2.77555756156289e-17
  7. -0.1  0.1
  8. -0.1  0.2
  9. -0.1  0.3
und dann geht's in alle Ewigkeit so weiter, weil die null quasi übersprungen wurde...

Wieso kommt es zu dieser krummen Zahl?!
__________________
Der Ball ist rund
Fralle ist offline   Mit Zitat antworten
Alt 28-10-2005, 17:04   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hi!
Das hat was damit zu tun, dass der Computer (so komisch es klingt) nicht genau rechnet. Gab mal einen Thread dazu - keine Ahnung, wo...
So sollte es aber gehen:
ActionScript:
  1. var zahl = 10;
  2. //Das hier geht halt nicht:
  3. /*this.onEnterFrame = function() {
  4.     zahl -= .1;
  5.     trace(zahl);
  6. };
  7. */
  8. //Das schon:
  9. this.onEnterFrame = function() {
  10.     zahl = Math.round((zahl-.1)*10)/10;
  11.     trace(zahl);
  12. };

edit: LIES DAS!
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++

Geändert von Der Frager (28-10-2005 um 17:10 Uhr)
Der Frager ist offline   Mit Zitat antworten
Alt 28-10-2005, 17:34   #3 (permalink)
Linksaußen
 
Benutzerbild von Fralle
 
Registriert seit: Jun 2003
Ort: Essen
Beiträge: 552
interessant...

Deine Formel auf mein Beispiel anwendet:
ActionScript:
  1. function giveWinnings() {
  2.     this.createEmptyMovieClip("giveToGuthaben", 200);
  3.     // Vorzeichen filtern und auf 0.1 bzw. -0.1 setzen
  4.     tencent = _root.win/Math.abs(_root.win)/10;
  5.     this.giveToGuthaben.onEnterFrame = function() {
  6.         trace(_root.win);
  7.         if (_root.win== 0) {
  8.             removeMovieClip(this);
  9.         } else {
  10.             _root.guthaben = Math.round((_root.guthaben+tencent)*10)/10;
  11.                 _root.win = Math.round((_root.win-tencent)*10)/10;
  12.         }
  13.     };
  14. }
funktioniert!

thanx!
__________________
Der Ball ist rund

Geändert von Fralle (28-10-2005 um 17:41 Uhr)
Fralle ist offline   Mit Zitat antworten
Alt 28-10-2005, 17:52   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Zitat:
Zitat von Fralle
Deine Formel auf mein Beispiel anwendet:
...Formel ist ja scharf . Bin ich ja doch Mathematiker... Schön, dass es klappt...
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager 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 20:47 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele