[MX] Radiobuttons

alma

Erfahrenes Mitglied
Radiobuttons [MX]

Hallo zusammen

Ich habe wieder einmal ein kleines Problem. Ich habe in Flash MX ein Quiz mit drei Fragen erstellt. Jede Frage hat drei mögliche Antworten zur Verfügung, also ein Quiz nach dem MultipleChoice-Verfahren.

Ich konnte die Radiobuttons auch wunderbar erstellen, jedoch weiss ich nicht wie ich überprüfen kann, welcher Button vom User angeklickt worden ist. Ich habe es mit folgendem Code versucht:

PHP:
if (frage1.r1 = true) {
trace ("1");
} else if (frage1.r2 = true) {
trace ("2");
} else if (frage1.r3 = true) {
trace ("3");
}


Dies funktioniert jedoch nicht wunschgemäss, ich kann anklicken was ich will, er gibt mir immer die Meldung "1" aus. Was mache ich falsch?

Ich habe euch hier einmal die Datei angefügt. Hoffentlich kann mir jemand helfen.

Vielen Dank bereits im Voraus

alma
 

Anhänge

  • quiz.zip
    57,2 KB · Aufrufe: 17
Mal ohne auch nur auf die Datei zu schauen und sie herunterzuladen, geb ich dir folgenden Hinweis:

Achte immer darauf, ob du in einem gewissen codetechnischen Zusammenhang einen Zuweisungsoperator oder einen Vergleichsoperator benötigst.

= ist der Zuweisungsoperator und weist einer linksseitig stehenden Variablen einen rechtsseitig evaluierten Wert zu, == hingegen ist ein Vergleichsoperator, der einen linksseitigen Wert mit einem rechsseitig stehenden auf Wertegleichheit überprüft, wobei noch eine Typenumwandlung der jeweiligen Variablen möglich ist.

Und dein Beispiel schaut mir weit eher nach gewolltem Vergleich als nach gewollter Zuweisung aus. ;)

Grüßle,
Geist
 
Hallo Geist

Ja dies mit == habe ich auch schon gesehen und auch in meinem Projekt ausprobiert, nur mein Problem ist, wenn ich dies mit dem Vergleichsoperator (==) versuche, gibt es mir überhaupt keine Meldung aus.

Kannst du mir hier nicht helfen?

Danke
 
Ulkige Sache mit der Datei...

Du hast den MCs mit den 3 Radiobuttons keinen Instanznamen gegeben, von daher hast du über versuchte Referenzen recht wenig Erfolg den MC anzusprechen.

Gibt man ihm jedoch einen solchen Namen, kann man immer noch nicht referenzieren, das Objekt besitzt weiterhin keinen Instanznamen, sondern wird automatisch vom Player benannt, bspw. als _level0.instance18 oder dergleichen.

Desweiteren ist mir Flash ein paarmal abgeschmiert beim Versuch deine Datei zu bearbeiten und beim Durchstöbern der Eigenschaften von Bibliothekselementen fiel mir ein "Macintosh"-Wörtchen irgendwo auf - arbeitest du auf einem Mac und stammt diese Datei auch von einem?
Wenn ja, wäre es vielleicht eine Begründung für meine Ungereimtheiten, bei der Instanzierung geht sonst eigenlich nichts schief. :)

Wie dem auch sei, versuch jedenfalls die drei MCs mit Instanznamen zu decken und dann erstmal über den Button die MCs anzusprechen, ganz einfach mit
PHP:
on (release) {
    trace(_level0.mc_instanzname);
}
Wird dir dort ein Objekt im Tracefenster ausgegeben, hat die Instanzierung schonmal geklappt und du kannst als nächstes die einzelnen Radiobuttons (die auch schon Instanznamen besitzen) referenzieren á la:
PHP:
on (release) {
    trace(_level0.mc_instanzname.radiobutton_instanzname);
}
Erfolgt auch hier eine Objektausgabe, kannst du nun getrost über ein angehängtes getState() den Status des Buttons abrufen...und dann erst an deinen Vergleichen arbeiten. :)

Grüßle,
Geist
 
Hallo Geist

Vielen Dank für deine kurze Anleitung. Ich konnte die MC's und die Buttons Instanzieren und es gibt mir auch die entsprechende Trace aus. Nur was ich nicht begreife ist, wie ich mit getState() den Status der Buttons abrufen kann.

Ich habe auch hier im Forum, sowie in dr Hilfe von Flash keinen entsprechenden Eintrag gefunden.

Wie muss ich hier vorgehen?

Vielen Dank für die Antwort

Alma
 
Die Methode radiobutton_instanz.getState() dürfte dir als Rückgabewert entweder den booleschen Wert true geben, wenn der Button markiert wurde, oder aber ein false wenn er bei Auslösung der Auswertung unmarkiert war.

Grüßle,
Geist
 
Hallo Geist

Ich habe alles nach deinen Angaben gemacht, und konnte auch immer die boolschen Werte true oder false ausgeben. Nur jetzt habe ich mein Quiz grafisch fertig gestellt, und möchte jetzt auf der letzten Seite des Quizes eine Zusammenfassung über die gegebenen Antworten liefern.

Ich versuchte dies wieder nach deiner Methode zu lösen, stiess jedoch erneut auf ein Problem. Wenn ich eine Trace-Anweisung schreibe, die den Wert von
PHP:
movieclip_instanz.radiobutton_instanz.getState()
hat, gibt es mir immer undefined aus.

Was mache ich dabei falsch? Ich habe dir hier auch die Datei noch angefügt.

Vielen Dank für die Auskunft

alma
 

Anhänge

  • quizproblem.zip
    45,8 KB · Aufrufe: 20
Hi,

uhm, täscuhe ich mich oder versuchst du im letzten Frame abzufragen, was bei der ersten Frage angeklickt wurde? Das kann doch gar nicht funktionieren. Flash hat die entsprechenden Daten bis dahin schon längstens verworfen.
Du musst die ganzen Antowrten, die getätigt werden, schon nach jedem Klick auf 'Weiter' zwischenspeichern, damit sie dir nachher zur Abfrage zur Verfügung stehen.
Hoffe ich habe nu keinen Mist gelabbert.
Naja, Ghosty wird mich schon wieder schelten, da bin ich mir sicher ^^

MfG
Killkrog
 
Nope, da hast du vollkommen recht. ;)

Ein äußerst nützliches Feature ist beim Testen des Filmes unter der Tastenkombination STRG + ALT + V zu finden; es werden alle existierenden Objekte des Filmes zum Zeitpunkt des Tastendrucks im Ausgabefenster erscheinen - dort sieht man deutlich, dass die angezielten Movieclips also überhaupt nicht mehr Bestandteil des Filmes sind, da sie eben in vergangen Frames liegen. :)

Also, wie killy schon ganz richtig meinte, am besten schon beim Weiterblättern über den unteren Button die Radiobuttons noch auswerten solange sie existieren.

Eine sicherlich äußerst nützliche Eigenschaft stellt weiterhin der ChangeHandler für die Komponenteninstanzen dar - über diese Eigenschaft kann im Prinzip auf eine Funktion verwiesen werden, die im Moment des Wechselns vom Buttonzustand automatisch aufgerufen wird - und schon hast du eine usergesteuerte Auswertung, denn sobald geklickt wird, wird geprüft und das Lösungswort-Array modifiziert. :)

Solltest du dir unbedingt mal anschauen, damit kannst du sicherlich einiges erleichtern, wenngleich es vielleicht auch etwas Eingewöhnung braucht.

Würde dir auch praktisch mit dem Film zur Hand gehen und dir beispielsweise mal ein Exemplar bieten, aber mir schmiert regelmäßig die Software ab, wenn ich deinen Film teste...

Gruß,
Adam
 

Neue Beiträge

Zurück