Bedingungen in ActionScript

branko

Erfahrenes Mitglied
Hi,

ich peile nun immer mehr die AS-Syntax und die Funktionen. Kann mir aber jemand erklären, wie ich in einer Bedingung gleichzeitig zwei Abfragen einbinden kann? In meiner Stammsprache Basic wäre das so:

Code:
IF a=0 AND B=0 THEN
Blablabla
END IF

Ich habe es in AS so versucht:

Code:
if (a==0) and (b==0) { Blablabla }

Ganz offensichtlich falsch, für das System, zumindest. Aber irgendwie muss das gehen...! Habt Ihr Ideen, wie? Ich programmiere etwas Primitives, ein Stein-Schere-Papier Spielchen, zum Einwärmen!

Grüße & Danke,
Branko
 
Hi,

eigentlich sollte das so gehn:
PHP:
if((bla = 0) && (blu = 1)) {
 //Anweisung 
}

Das sollte es eigentlich auch schon gewesen sein ;)

mfg heino

//edit: Statt den && kannst du natürlich auch and verwenden!
 
Zuletzt bearbeitet:
Tach, Heino,

ne, eben das so nicht. Ich habe folgende Codes probiert

Code:
if (a==0) and (b==0) { trace("Treffer") }
Code:
if (a==0) && (b==0) { trace("Treffer") }
Code:
if (a=0) and (b=0) { trace("Treffer") }
Code:
if (a=0) && (b=0) { trace("Treffer") }

Ich bekomme immer die Meldung, dass "and" oder "&&" unerwartet kommt. Wat nu? Ich habe eine Extradatei gemacht, die nur diesen Code und die dazugehörigen var´s hat, läuft trotzdem nicht, es liegt also nicht an einer anderen Schleife oder Bedingung.
 
Ja, und wenn du dir meinen Code genau anguckst, dann siehste das da noch ne Klammer ganz rum is ;)
if((bla = 0) && (blu = 1)) {
//Anweisung
}

mfg heino

//edit: Aja, anscheinend ist es seit neustem(flash 8) sogar egal ob = oder == (oder war das schon immer so?!)
 
Zuletzt bearbeitet:
Hi,

Vergleiche werden mit zwei Gleichheitszeichen durchgeführt - alles andere ist eine Zuweisung! Korrekt ist:
Code:
if (a == 1 && b == 2) {
    machwas();
}

Gruß
.
 
@Menzel:
Hmm, bei mir geht beides?

Also die Möglichkeit die ich vorgeschlagen hab und die von dir :D
Habs ausprobiert, klappt beides bestens, jedenfalls bei flash 8?!

mfg heino

//wieder edit: jo, normalerweise is imemr mit == aber warum funktioniert nun beides?
 
Oh Mann. Ich hätte nicht gedacht, dass die Sprache so massiv Blockorientiert ist, aber ich hätte es mir fast denken können. Auf DIE Lösung wäre ich aber erst nach Jahrhunderten gekommen. Danke, Jungs!
 
@branko:
Noch ne Frage: Funktioniert bei dir auch beides? Also die Möglichkeit von Menzel und von mir?

Wenn ja, scheint das wohl neu zu sein, in vorherigen Versionen war das denke ich noch nicht so :)
 
Naja, es kommt keine Fehlermeldung, sagen wir es mal so. Tatsächlich aber weist ein = Werte zu, da habe ich mich erst dicke gewundert, warum bei einem Vergleich auf einmal zu vergleichende Werte übernommen werden. Was ich aber nicht peile ist das ===. Ein absoluter Vergleich, steht in der Hilfe, nur was bedeutet dieser? Schon verschiedene Variabeltypen können nicht mit == verglichen werden.
 
So?

dann probier mal folgendes:
Code:
var a = 1;

if (a = 0) {
	trace("Hallo");
}

trace(a);
Du wirst als Ausgabe "0" bekommen, da Du eine Zuweisung ausgeführt hast. Das "Hallo" wird deshalb nicht zurückgegeben, weil a (und damit der Ausdruck der Zuweisung) den Wert 0 hat.

@branko === ist ein typsicherer Vergleich. Bei simplen numerischen Werten in Flash eigentlich müssig, weil es nur den Typ Number gibt. Bei abgeleiteten Klassen u.U. aber wichtig. Da Flash aber unter bestimmten Umständen auch Strings mit Zahlen vergleichen kann, führt z.B.:
Code:
if ("1" === parseInt("1", 10)) {
	trace("ja");
}
zu keiner Ausgabe,
Code:
if ("1" == parseInt("1", 10)) {
	trace("ja");
}
jedoch zu einem "ja".

Gruß

P.S.: Nenn mich bitte nicht "Menzel" - wir reden uns ja hier nicht mit den Nachnamen an. ;)
.
 

Neue Beiträge

Zurück