Radio Button logisch verküpfen

intercorni

Erfahrenes Mitglied
Hallo,

ich muss ein Umfragetool in Flash bastelt und habe dazu drei Radio Buttons (UI-Components) die Stellvertretend für drei Antwortmöglichkeiten stehen.
Jetzt benötige ich eine Funktionalität, die ich per AS definieren müsste:
den drei RadioButtons müsste jeweils ein eigene Variable zugeordnet werden.
Danach müsste ich definieren, welche Variable als richtige Antwort gilt, um damit
beispielsweise einen MC zu starten.
Blos wie kann ich das machen?

Gruss,

Cornel
 
Ist die Frage zu schwierig?

Vielleicht anders: wie kann ich abfragen, welche der 3 RadioButtons angeklickt wurde, um diesen dann eine Variable zuzuordnen?

Cornel
 
Habe etwas ausprobiert: die drei RadioButtons haben jeweils einen Instanznamen bekommen: "antwort1", "antwort2", "antwort3".

Dann habe ich die Abfrage gestartet:

if (antwort1.selected == true) {
trace('diese instanz wurde selektiert');
} else {
trace('diese instanz wurde nicht selektiert');
}

Leider funktioniert es nicht, daher es wird permanent ein 'diese instanz wurde nicht selektiert' ausgegeben.
Was habe ich übersehen?

Gruss,

Cornel
 
Hi,

Komponenten arbeiten mit Listenern, um Statusänderungen anzuzeigen. Um Dir explizit weiterhelfen zu können, müsste ich wissen, mit welcher Version Du arbeitest, da sich die Komponenten und der Zugriff unterscheiden (6, 7, 8).

Gruß
.
 
Ich mag Komponenten nicht sonderlich, wenn man die umdesignen will braucht man nen ganze Weile. Ich hab mir schnell selbst welche programmiert. Sehen aus wie die von Windows. Einfach einen conatiner nehmen für die 3, darin 3 instanzen ziehen, jeder Radiobutton hat 4 Schlüsselbilder, die: "Rollover unmakiert, unmakiert, Rollover makiert, makiert" darstellen, darüber noch eine Ebene mit ActionScript, die beim klick auf einen die restlichen zurückschaltet.
Welcher makiert ist, kann man dann zb durch ._currentframe abfragen.


Marius
 
Hallo,

ich arbeite mit FlashMX Professional 2004.

Mit einem Listener habe ich es mal ausprobiert, wobei ich auch ein Abfrageergebnis erhalte:

Code:
myCheckboxListener = new Object(); 
// click event handler
myCheckboxListener.click = function ()
{
    if ( antwort1.selected )
    {
        trace("antwort1aktiv");
    }
    else
    {
        trace("antwort1deaktiv");
    }
}
           
// register the event listener
antwort1.addEventListener("click", myCheckboxListener);

"antwort1" ist hier der RadioButton.
Ich müsste jeden der drei Button eine Variable zuordnen die dann beim Anclicken übermittelt wird. Dann müsste noch festgelegt werden was passiert, wenn eine der drei Variablen übermittelt werden.
Wie kann ichd as machen?

Gruss,

Cornel
 
Hi,

ich verstehe nicht, was Du mit "Variable übermitteln" meinst - der Listener "click" bekommt ein EventObject übergeben, anhand dessen Du u.A. feststellen kannst, welche Box geklickt wurde. Welche Informationen fehlen Dir denn noch?

Gruß´
.
 
Ich müsste eine Aktion, z.B. gotoAndPlay einem beliebigen RadioButton zuordnen können.
Es müsste also so sein, dass beim Klick übermittelt wird, welcher Button gerade aktiv ist.
Das frage ich ja auch mit dem Listener ab.
Jetzt müsste ich noch sagen können: wenn RadioButton 1 gedrückt wurde, spiele Film ab (z.B.), wenn Button 2 gedrückt wurde ... usw
Ich will die Anweisung dazu aber nicht hier im Script reinschreiben:
Code:
myCheckboxListener1 = new Object(); 
myCheckboxListener1.click = function ()
{
    if ( antwort1.selected )
    {
        trace("antwort1aktiv");
    }
    else
    {
        trace("antwort1deaktiv");
    }
}
antwort1.addEventListener("click", myCheckboxListener1);
Vielmehr soll z.B. eine Variable ausgegeben werden, z.B. "1"
Dabei wird dann permanent abgefragt, welche Variable gesendet wird, um daraufhin dann ein Ereignis auszulösen.
Wird "1" gesendet, soll sich z.B. ein Movie öffnen, bei "2" und "3" erscheint dann eine Fehlermeldung.
Ich möchte das so lösen, weil ich auf mehreren Frames unterschiedliche Fragen einblende (immer eine Frage mit jeweils drei Antwortmöglichkeiten). Darum wäre es schön, wenn den RadioButtons immer die selbe Variable zugewiesen bleibt und ich einfach nur im Script dann die Reaktion darauf ändere.
In Frame 1 z.B. soll RadioButton1 ein loadMovie auslösen, im Frame 5 beispielsweise soll RadioButton3 das Movie laden.
Ich könnte die Anweisung dazu natürlich jeweils auf den Radiobutton legen, aber das wird bei vielen Buttons dann zu unübersichtlich.
Ich hoffe ich habe es so einigermaßen verständlich formuliert.
Gruss,

Cornel
 
Zuletzt bearbeitet:
So was?
Code:
var anzahl = 3;

var rl = new Object();
rl.click = function(eo) {
	var obj = eo.target;
	for (var i=1; i<=anzahl; i++) {
		if (obj._name == "r" + i) {
			antwort(i);
			break;
		}
	}
}

for (var i=1; i<=anzahl; i++) {
	this["r" + i].addEventListener("click", rl);
}

function antwort(i) {
	trace("Antwort " + i + " gewählt");
}
(Die Radiobuttons haben hier die Instanznamen "r1", "r2" und "r3")

Die Funktion "antwort" bekommt die Nummer des gewählten Radiobuttons übergeben. Dort kannst Du Deine Aktionen reinsetzen.

Gruß
.
 
Deine Lösung ist super.
Ich habs jetzt so aufgebaut:
PHP:
var anzahl = 3;
var rl = new Object();
rl.click = function(eo) {
	var obj = eo.target;
	for (var i = 1; i<=anzahl; i++) {
		if (obj._name == "r"+i) {
			antwort(i);
			break;
		}
	}
};
for (var i = 1; i<=anzahl; i++) {
	this["r"+i].addEventListener("click", rl);
}
function antwort(i) {
	trace("Antwort "+i+" gewählt");
	if (i == 2) {
		reaktions_mc.gotoAndStop(2);
	} else {
		reaktions_mc.gotoAndStop(3);
	}
}
Der MC "reaktions_mc" beinhaltet zwei Textfelder, in die Texte aus einem XML-File eingeladen werden.
Funktioniert so alles jetzt auch wie es soll, danke für die Hilfe.

Gruss,

Cornel
 
Zuletzt bearbeitet:
Zurück