Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-06-2004, 12:29   #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
Novanic ist offline   Mit Zitat antworten
Alt 09-06-2004, 12:44   #2 (permalink)
experience++;
 
Benutzerbild von salazar
 
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
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 09-06-2004, 13:13   #3 (permalink)
Neuer User
 
Benutzerbild von lernenOhneEnde
 
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);
lernenOhneEnde ist offline   Mit Zitat antworten
Alt 09-06-2004, 13:52   #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
Novanic ist offline   Mit Zitat antworten
Alt 09-06-2004, 13:53   #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
raabix 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 05:46 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele