| |||||||
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: Dec 2003
Beiträge: 90
| ActionScript spinnt/verguckt sich?!
Hi Leute, ich ärger mich jetzt schon seit mehreren Tagen mit diesem Problem rum! Es scheint echt so als ob sich ActionScript verguckt! Ich lade die Variablen "point1" - "point5" per "loadVariablesNum()" aus einer Textdatei. Der Timer prüft dann ständig, bis in "point5" etwas anderes als "0" (am Anfang steht bei allen "point"-Variablen der Wert "0" drin) steht. Sinn dieser Funktion ist es zu prüfen, ob die Variable "VarPunkte" größer als mindestens eine "point"-Variable ist. In einem meiner Fälle war z.B. VarPunkte = 11452 und point5 = 1200. Als der Code dann abgespielt wurde erschien die Meldung "11452 ist kleiner als 1200". Das stimmt doch garnicht! Wie kommt ActionScript denn dadrauf?? Kann das jemand verstehen oder einen Fehler im Code entdecken? Code: function checker () { if (point5!=0) { for(var i=1;i<=5;i++) { if(VarPunkte>=_root["point"+i]) { trace(VarPunkte + " ist größer als " + _root["point"+i]); TLabel1._visible = true; TPlayer._visible = true; Selection.setFocus("TPlayer"); finished = true; } else if(i==5 && finished == false) { trace(VarPunkte + " ist kleiner als " + _root["point"+i]); } } clearInterval(counter2); } } counter2 = setInterval (checker, 10); Danke schonmal im Voraus! :-) Gruß Nova |
| | |
| | #2 (permalink) |
| experience++; Registriert seit: Jul 2002 Ort: Düsseldorf
Beiträge: 11.347
|
haste mal geschaut um welchen typen von var es sich handelt? also mit typeof? müssen ja numbers sein... wenn nicht dann weißte woran es liegt. war nur so ein verdacht! wenns was anderes ist muß ich mal genauer schauen ![]() cya, sal
__________________
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme! |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Jun 2004
Beiträge: 77
|
Ich denke dass es mit dem VariablenTyp zusammenhängt. Probiers mal so: if (int(point5)!=0) { for(var i=1;i<=5;i++) { if(VarPunkte>=int(_root["point"+i])) { trace(VarPunkte + " ist größer als " + _root["point"+i]); TLabel1._visible = true; TPlayer._visible = true; Selection.setFocus("TPlayer"); finished = true; } else if(i==5 && finished == false) { trace(VarPunkte + " ist kleiner als " + _root["point"+i]); } } clearInterval(counter2); } } counter2 = setInterval (checker, 10); |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Dec 2003
Beiträge: 90
|
ich glaube ich habe die Lösung jetzt gefunden, finde ich aber total unlogisch! Der Fehler lag anscheinend in dieser Zeile: else if(i==5 && finished == false) Wenn man auf i==1 anstatt auf i==5 prüft, funktioniert es scheinbar. Das ist doch aber total unlogisch oder? Es wird ja rauf gezählt, also ist 5 der höhste Wert und nicht 1. Aber es scheint merkwürdigerweise genau andersrum zu laufen. Ist das nicht komisch? Trotzdem danke für eure Hilfe! :-) Gruß Nova |
| | |
| | #5 (permalink) |
| Codeworker Registriert seit: Jun 2004 Ort: St. Pölten
Beiträge: 4
|
Ich würde Deine Funktion sowieso etwas anders gestalten: Die zweite If-Abfrage mit i==5 und finished==false kann eleganter gemacht werden, indem bei der richtigen Bedingung die Variable finished auf TRUE gesetzt wird und Du nachher prüfst Du einfach, ob die Variable auf true gesetzt wurde (es erübrigt sich zu fragen, ob i==5 ist, weil das nach dem Schleifendurchlauf ohnehin der Fall ist. Ich weiss zwar nicht, ob dies Dein Problem behebt, aber ich finde den Code so schöner und verständlicher. function checker() { if (point5 != 0) { for (var i = 1; i<=5; i++) { if (VarPunkte>=_root["point"+i]) { trace(VarPunkte+" ist größer als "+_root["point"+i]); TLabel1._visible = true; TPlayer._visible = true; Selection.setFocus("TPlayer"); finished = true; } else trace(VarPunkte+" ist kleiner als "+_root["point"+i]); } if(finished == false) trace("Keiner der Variablen war grösser als eine der point-variablen"); clearInterval(counter2); } } counter2 = setInterval(checker, 10); Greetz raabix |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |