Boolean in SchaltflächenMCs

gygra

Mitglied
MoinMoin,

ich komme mal wieder nicht weiter. Ich wollte als AS-Übung einen MC als Schlatfläche (block_mc) benutzen, so dass er auf Klick die Farbe wechselt. Dazu hatte ich die Variable (kol) als Boolean deklariert. Jetzt sollte der Wert von kol beim Klick auf die Schaltfläche seinen Wert verändern. block_mc ändert beim ersten Klick auch seine Farbe, aber beim weiteren Klick leider nicht wieder zurück. Ich vermute mal, dass der Boolean nicht verändert wird, aber warum?
Die Scripthilfe sagt, dass keine Fehler drin sind. Muss ich möglicherweise vor der if-Funktion die Variable nochmal direkt abfragen, ob sie true oder false ist? Und wenn ja, wie mach ich das? Über getProperty oder so?
Es geht jetzt nicht wirklich um die Schaltfläche, sondern um die Sache mit dem Booleanwert, und wie man dort die Werte verändert.
 

Anhänge

  • boolean.fla
    23 KB · Aufrufe: 42
Hi,

Dein Block:
Code:
if (kol == true) {
	block_mc.onRelease = function() {
		colorTrans.rgb = 0x333399;
		trans.colorTransform = colorTrans;
	};
	// farbe auf blau ändern
} else {
	block_mc.onRelease = function() {
		colorTrans.rgb = 0x000000;
		trans.colorTransform = colorTrans;
	};// farbe auf schwarz ändern
	
}
wird nur einmal ausgeführt (nämlich dann, wenn dieses Schlüsselbild verarbeitet wird). Da "kol" zu Beginn den Wert "true" hat, wird der erste onRelease-Handler erstellt und beim Klick aufgerufen. Die Codestelle, an der die Variable geändert wird:
Code:
if (colorTrans.rgb == 0x333399) {
	kol = false;
}
wird auch nur einmal (zu Beginn) durchlaufen.

Du musst die Variable ändern, wenn der Button angeklickt wurde:
Code:
block_mc.onRelease = function() {
  col = !col; // Bool'sche Variable ändern
  colorTrans.rgb = (col)? 0x333399 : 0x000000;
  trans.colorTransform = colorTrans;
}

Weitere Fehler:
  • Ein Objekt einer Instanz (hier: Boolean) wird mit dem Schlüsselwort "new" erstellt:
Code:
var kol:Boolean = new Boolean();
  • Bei Deinem "block_mc" handelt es sich nicht um einen MovieClip, sondern um ein Schaltflächenobjekt. Ich würde Dir empfehlen, immer MovieClip-Objekte zu verwenden, da sich diese um einiges flexibler einsetzen lassen.

Gruß
.
 
Hi,

war ein paar Tage offline, deshalb erst jetzt eine Reaktion. Danke erstmal, da wär ich ja nie draufgekommen. Ich hatte mich bei der Geschichte durch die Flash-Hilfe gewühlt und bin dabei wohl der Boolean-Funktion hängengeblieben, von der heisst es, dass sie im Gegensatz zum Objekt nicht mit "new" arbeitet. Allerdings hab ich nicht wirklich geschnallt, was denn nun eigentlich der Unterschied zwischen einem Boolean-Objekt und einer Boolean-Funktion ist, bzw, wann welches benutzt wird.
Bitte, erleuchte mich! Ommmmmm:)
 
Hi,

die "Boolean"-Funktion wandelt einen Wert eines anderen Typ (String, Number, etc.) in einen bool'schen Wert um. Wenn Du nur eine "primitive" Variable vom Typ Boolean erstellen willst, genügt folgendes:
Code:
var bool:Boolean = true; // Casting ist überflüssig
Diese Funktion brauchst Du also nur, wenn Du z.B. einen String mit dem Wert "true" hast, den Du in den Wert true umwandeln willst.

Mit dem Konstruktur der Boolean-Klasse erstellst Du ein Objekt vom Typ Boolean.

In der Referenz unter Elemente der ActionScript-Sprache > Globale Funktionen > Boolean-Funktion werden die Unterschiede eigentlich recht anschaulich erklärt.

Gruß
.
 
Zurück