Button Problem nach Combobox Aktion


Hi Flasher,
Ich hab nen komisches Problem. Hab nen Mc gebastelt der mehrere Comboboxen enthält. Dort kann der User Farben von Elementen auf dem Haubt MC aussuchen. Klappt auch alles wunderbar. Jetzt tritt aber vollgenes auf, sobald der Usere ne Farbe per Combobox gewählt hat und den Übernehmen button drückt, wechselt die Farbe aber alle anderen Buttons egal im welchen Mc und welches Level funktionieren nur noch beim ersten Klick. Wenn man den Button dann nochmal drücken will muss man erst die Maus bewegen. Erst dann ist erneutes drücken möglich.
Der Mc mit den Comboboxen hat dieses Script:
Code:
var Colorpfad = new Array ("_root.Karte.map.targetwagen", "_root.Karte.map.targetregal")

var Ziel = true;
var Ziel2= true;


function color_change (){
	for (var i=1; i<=10; i++) {
		Boxen =  this["box" + i].getValue();
                //Boxen sind die Comboboxen
		Vorschau =  this["Vor" + i];
               // Vorschau ist nen kleines Viereck das halt die Farbe ändert
		colors();
	}
}

function colors (){
	switch (Boxen){
	case "Blau":
	color1=new Color(Vorschau);
	color1.setRGB(0x170CFE);
	break;
	case "Rot":
	color2=new Color(Vorschau);
	color2.setRGB(0xFF0B0B);
	break;
	case "Gelb":
	color3=new Color(Vorschau);
	color3.setRGB(0xF2FE0C);
	break;
	case "Grün":
	color4=new Color(Vorschau);
	color4.setRGB(0x29FF0B);
	break;
	case "Braun":
	color5=new Color(Vorschau);
	color5.setRGB(0xB67854);
	break;	
	case "Orange":
	color6=new Color(Vorschau);
	color6.setRGB(0xFBA20F);
	break;	
	case "Violett":
	color7=new Color(Vorschau);
	color7.setRGB(0xFE0CF2);
	break;	
	case "Türkis":
	color8=new Color(Vorschau);
	color8.setRGB(0x0BFFFF);
	break;	
	case "Schwarz":
	color9=new Color(Vorschau);
	color9.setRGB(0x000000);
	break;	

	}
}

// Hier mach Ich nen Lister der überwacht ob sich die ComboBox ändert

form = new Object();
form.change = function(eventObj){
 color_change();
}

// Hier setzt Ich das default bei den Boxen
this.box1.addItemAt (0, "Blau");
this.box3.addItemAt (0, "Gelb");
this.box4.addItemAt (0, "Rot");
this.box7.addItemAt (0, "Grün");

// Dann den ganzen Inhalt
for (var N=1; N<=10; N++) {
this["box" + N].addItem("Schwarz"); 
this["box" + N].addItem("Blau"); 
this["box" + N].addItem("Rot"); 
this["box" + N].addItem("Gelb"); 
this["box" + N].addItem("Grün"); 
this["box" + N].addItem("Braun"); 
this["box" + N].addItem("Orange"); 
this["box" + N].addItem("Violett"); 
this["box" + N].addItem("Türkis"); 
this["box" + N].addEventListener("change", form);
}

// Und lösch was evt doppelt drin ist
this.box1.removeItemAt(2);
this.box3.removeItemAt(4);
this.box4.removeItemAt(3);
this.box7.removeItemAt(5);

color_change();
//Die Vorschau wird beim öffnen des MC nach dem Inhalt der Boxen geändert.

Auf dem Button ist es dann ähnlich, ändere nur die Variable Vorschau mit den Daten aus dem Array welche die Pfad angaben enthält.
Code:
on (release){
	for (var i=1; i<=2; i++) {
	Boxen =  this["box" + i].getValue();
	Vorschau = Colorpfad[i - 1];
colors();
	}
}



Mein allgemeines Problem ist auch das Ich mir grad MX2004 anschau. In MX hatte Ich Probleme mit den Boxen und konnte es unter der Trial von 2004 lösen. Das gesammte Projekt wurde aber in MX gebaut und nur den MC mit den Farben und Boxen in MX2004.
Mit 2004 kenne Ich mich garnicht aus, naja und mit Flash eigentlich auch nett besonders ;-)
danke für eure mühe das zu lesen,
hoffentlich hat jemand nen Tipp für mich.
gruß CM


Noch ne schnelle Anmerkung, im Debugger tauchte sowas auf:
Variable _level0.focusManager.lastMouse = [Objekt #937, Klasse 'Object'] {
x:618.95,
y:207
}
hat das mit dem Lister zu tun?
gruß CM
 
Zuletzt bearbeitet:

Tobias Menzel

Erfahrenes Mitglied
HI,

grob kann ich mir zwar vorstellen, was Du damit bezwecken willst, aber soweit ich das sehe, überprüfst Du nirgendwo, welche Combobox mit welchem Wert nun gewählt wurde... ?

Kannst Du die Datei bitte einmal anhängen? So ein Problem lässt sich viel besser "in situ" debuggen, als durch reines Betrachten eines Scriptausschnittes. ;)

Gruß
.
 
Hi Datic,
hm *unschuldig in die Luft schau*, ähm ja könnt sein das Ich nicht nachschau welche Box gewählt wurde. Hab Ich nicht so hinbekommen, und spontan die Boxen durchnummeriet und einfach auch die Aktionen durchgezählt. Wenn eine Box geändert wurde ändert er alles, da er in Schleifen alle Boxen und Aktionen durchgeht.

Ich hab mal ne bsp Fla gebaut, da fällt jetzt nur nicht auf das Die Buttons eigentlich immer gehen bis halt das MC geladen wurde. In der BSP Fla wird es ja direkt als _root geladen.
gruß CM
 

Anhänge

  • bsp-fla.zip
    192,2 KB · Aufrufe: 16

Tobias Menzel

Erfahrenes Mitglied
Ok, jetzt ist mir klar, wie Du das angehst.... funktioniert auch (soweit ich das sehen kann) alles.

Was soll nun aber das Problem sein bzw. Wo muss ich erst die Maus bewegen, bis was passiert? :confused:

Gruß
.
 
Sry war einkaufen. Ich hasse das Samstags, naja. ;-)
Hm ja soweit geht alles, Nur wenn du mal schaust mit den grünen Buttons kann man ja den Alpha wert der ersten ausschalten. Wenn man jetzt den Button drückt und direkt danach wieder ändert sich nichts mehr. Erst ne sekunde später oder wenn man die maus bewegt hat kann man wieder ne Funktion auslösen. Obwohl das klingel Geräusch immer kommt. Problem daran ist das Ich auf dem Haubtmc ein paar Buttons habe wo Ich die Position eines MC veränder. Das Ist nervig jetzt immer den Mauszeiger zu bewegen wenn man einmal geklickt hat.
Schön bei mir zu erkennenan den grünen Buttons, ändert sich ja immer von grün auf rot und andersrum. Wenn ich wiegesagt eine Combobox auslöse Reagiern bei mir die Buttons anders als gewohnt.

Edit: Die kleinen code Fehler die Ich beim aufbau der bsp-fla gemacht hab einfach mal übersehen ,-)
 

Tobias Menzel

Erfahrenes Mitglied
Ähem.

Könnte das nicht einfach daran liegen, dass Du beim Einblenden so etwas:
PHP:
_root.Karte.map.targetregal._alpha = 100
stehen hast, und _root.Karte.map einfach nicht definiert ist?

Gruß
.
 
Das war der code Fehler den Ich grade meinet, Nein und selbst wenn sollte sich bei mir ja wenigstens der button von grün auf rot ändern.
Hm Anscheinend ist das Problem bei dir nicht?
Ich habs jetzt schon zweimal einmal logischerweise im Original und in der bsp-Fla.
 

Tobias Menzel

Erfahrenes Mitglied
Nee, bei mir ändert sich der Button wie er es sollte.

Allerdings hast Du die Variable "Ziel" auch auf Button3 usw. verwendet, was zu Konflikten führt, da diese Variablen bei Schaltflächen auf der Hauptzeitleiste angelegt werden.

Sinnvoller wäre es, statt Schaltflächen MovieClips zu verwenden und "Ziel" jeweils als lokale Variable des Buttons anzulegen. Alle anderen Objekte müssten dann lediglich im on(press)-Handler mit einem _parent adressiert werden.

Gruß
.
 
hm das ist dann ja noch komischer. Bei mir und auch bei dem Laptop meiner Freundin hab Ich das Problem. Eine auswahl in der Combobox getroffen und schon kann ich den Button nur einmal drücken. Dann Mausbewegen wieder einmal bewegen, drücken und so weiter. Kann das an der Trial liegen mit der Ich Arbeite (MX2004) ? Ich verstehe dann aber trozdem nicht warum es bei dir klappt. Hm eigentlich bin ich jetzt richtig verwirrt ;-)
 

Tobias Menzel

Erfahrenes Mitglied
Oh. :eek: Jetzt habe ich es auch gesehen: Ich habe in der Tat vergessen, zuerst eine Combobox auszuwählen.

Ich habe das direkt mit einer neuen Datei getestet, die nur eine Combobox und einen Button enthält und siehe da: das selbe Problem macht sich bemerkbar.

Ich vermute, dass es mit der Tiefenebenensteuerung der Komponenten zusammenhängt, die dafür sorgt, dass z.B. Komboboxen immer im Vordergrund liegen, wenn man die Optionen öffnet. Die Box erstellt vermutlich eine unsichtbare Ebene über allen anderen Objekten, die Deinem onRelease-Handler in die Quere kommt.

Ich werde das mal noch etwas weiter untersuchen und etwaige Ergebnisse hier posten.

Gruß

EDIT: Meine ersten "Verdächtigen" waren die Objekte _root.reserved und _root.depthChild0 - allerdings führten Versuche, beide Objekte zu manipulieren (Tiefen verschieben, Instanzen löschen) bislang zu nichts. Auch das Herumspielen mit dem focusManager blieb bisher Ergebnislos...
.
 
Zuletzt bearbeitet:

Tobias Menzel

Erfahrenes Mitglied
Nachtrag: Ich hab die Lösung. :D

... naja, zumindest einen Workaround:

Gib jedem Button zusätzlich zum onRelease-Handler nich einen onPress-Handler mit folgenden zwei Zeilen:
PHP:
on(press) {
	_root.focusManager.enabled = false;
	_root.focusManager.setFocus(_root);
}
Damit sollte der Focus von den Comboboxen wieder auf die Hauptebene gelegt werden.

Gruß
.
 
Hey Coole Sache,
danke dir. super. Man muss zwar erst nen Button drücken damit alles wieder gewohnt geht. Aber das ist ja kein Problem und der User kriegt davon auch nix mit, er muss ja sowieso bestätigen.
Vielen Herzlichen dank. Hat dich heute mal etwas mehr mühe gekostet. Jaja Ich entwickel mich, heißt auf deutsch die Fragen werden schwerer ;-) Nein, scherz. Aber vielen dank nochmal für die Lösung.

gruß CM
 

Tobias Menzel

Erfahrenes Mitglied
Hi,

Du kannst auch z.B. folgendes machen:
PHP:
form.change = function(eventObj) {
	resetFocus();
	color_change();
}

function resetFocus() {
	var c = 0;
	this.onEnterFrame = function() {
		_root.focusManager.enabled = false;
		_root.focusManager.setFocus(_root);
		trace(_root.focusManager.getFocus());
		c ++;
		if (c > 10) delete this.onEnterFrame;
	}
}
Nach etwa zehn Frameaufrufen lässt sich der Focus endlich ändern... ^^ - ist aber eine sehr unglückliche Methode.

Gruß

P.S.: Jetzt weiß Du vielleicht, warum ich wenns geht die Finger von den mitgelieferten Komponenten lasse. ;) Falls es Dir hilft: Ich habe irgendwo noch eine selbstgebaute Combobox, vielleicht hast Du ja Interesse daran, obwohl die etwas einfacher gestrickt ist, als die von Macromedia.
.
 
Die erste Lösung ist schon super und reicht mir völlig. danke trozdem :)

Das Lustige ist Ich überlege mir ja schon MX2004 zu kaufen weil Ich unter MX nur probleme mir den ComboBoxen hatte. Naja unter MX2004 geht ja schon so einiges mehr.

Wäre aber cool wenn du mir deine Combobox mal zukommen lassen kannst. Würd mir bestimmt weiter helfen.

Gruß CM


Ps.: Dein altes Bild war viel cooler :)
 

Tobias Menzel

Erfahrenes Mitglied
Hi,

ich häng sie mal an.

Ist allerdings eine Alphaversion, die noch etwas kompliziert zu handeln ist.

Du übergibst der Combobox ein Array aus Objekten mit jeweils den Eigenschaften "value" und "label". Ein onChange-Listener ist standardmässig dabei und wird beim Anwählen eines Eintrags aufgerufen (siehe Beispieldatei).

Die Boxen haben keinen FocusManager bzw. ändern die Stapelreihenfolge im Film nicht. Daher musst Du darauf achten, dass sich die Comboboxen in der obersten Ebene des Films befinden und, falls Du mehrere untereinander anordnest, dass die oberste Box auch zuoberst in der Stapelreihenfolge liegt.

Gruß

P.S. @Avatar: Find ich nicht, das hier ist immerhin die Photoshop-Katze ^^
.
 

Anhänge

  • combobox_v0.zip
    15,1 KB · Aufrufe: 16
Coole Sache, danke.
Ich werd Sie mir morgen mal anschaun und kucken was Ich damit anfangen kann. (Freundin schaut schon etwas böse auf meinen PC und mich davor ; - ) )
Ich danke dir aufjeden fall, und wünsch dir alles gute.

gruß CM
 

Neue Beiträge

Forum-Statistiken

Themen
272.360
Beiträge
1.558.622
Mitglieder
187.833
Neuestes Mitglied
SirrDansen