| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Oct 2003
Beiträge: 124
|
Moin zusammen, ich habe mal eine Frage zu Listenern in Bezug auf das Model-View-Controller-Pattern. Ich habe Objekte, die aus einer View heraus erstellt werden, ist leider so weil ich dort die MovieClip-Klasse brauche und ich ja leider nicht von mehreren Klassen vererben kann. Diese Objekte sollen jetzt sich jetzt beim Klicken ändern, was auch wunderbar funktioniert. Nur wie bekomme ich diese Änderung dem Controller bzw. dem Model beigebracht? Im Buch von Moock wird das ja mit Listenern gemacht, aber damit komme ich irgendwie nicht zurecht. Ich habe also einen MC, den klicke ich, der ändert seinen Status und soll es irgendwie dem Controller/Model erzählen. Nur wie? Muss der Listener zum MC? Und gebe ich dann die Funktion aus dem Controller an, die aufgerufen werden soll? Und kann ich hier noch Parameter übergeben? Oder gibt es vielleicht eine viel elegantere Lösung? Danke schonmal für eure Hilfe, ihr könntet mir das Wochenende retten |
| | |
| | #2 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg
Beiträge: 4.350
|
Wenn ich das richtig verstanden habe, würden deine MCs nur die View benachrichtigen, und der Controller ist bei der View als Listener angemeldet.
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Dec 2005
Beiträge: 99
|
Du könntest z.B. ein Interface IController schreiben mit einer Methode wie z.B. event(view, event, args) die dein Controller bzw. alle Controller implementieren. Dein View muss dann natürlich seinen Controller als Typ IController kapseln. private var controller : IController Und dann kannst Du im View sowas machen wie: Code: onPress = Delegate.create(this, pressed);
private function pressed() : Void {
controller.event(this, 'pressed', irgendwas);
} |
| | |
| | #4 (permalink) | |
| Neuer User Registriert seit: Oct 2003
Beiträge: 124
| Zitat:
Die einzelnen MCs bzw. Objekte mit den MCs liegen in einem Array, wenn sich also das Model (das Array des Models) ändert, soll sich der Zustand des MCs an dieser Stelle im Objekt-Array der View ändern und umgekehrt. Jetzt muss ich nur mal schauen, wie der Controller Bescheid bekommt, ich werde mal ein wenig hier nach den Delegaten stöbern, vielleicht ist das ja die richtige Lösung. | |
| | |
| | #5 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg
Beiträge: 4.350
|
Naja, generell ist es ja der Controller, der die View erstellt, oder zumindest initialisiert. An diesem Punkt kann er sich ja auch noch als Listener anmelden.
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Oct 2003
Beiträge: 124
|
Also ich hab mir jetzt mal ein paar kleinere Beispiele von MVC hier im Forum angeschaut und ich muss sagen, was der Moock in seinem Buch da macht, das ist irgendwie sehr verwirrend, wenn man die anderen Beispiele so anschaut. Ich denke, dann sollte ich auch die Sache so langsam verstanden haben und ich denke, ich werde mir noch gründlich überlegen, ob ich weiter vorhabe die Sache nach den Vorschlägen von Moock zu realisieren. |
| | |
| | #7 (permalink) |
| l2l|c4o Registriert seit: Nov 2005 Ort: düstere Grotte im Süden
Beiträge: 1.119
|
Hallo , durch einen Multible Listener kann man ganz einfach scope auf eine Variable setzen zB. ein Textfeld mit einer Variablen vorallem onChanged wird nur aufgerufen wenn sich das Textfeld aka die Variable verändert sonst nicht ! es wird nur dann ausgewertet wenn sich etwas verändert Code: //>>-----------Start------SetupMultipleListener-------------------------------
Textfield.prototype.setText = function(str) {
this.text = str;
this.broadcastMessage("onChanged");
};
_level0.a.text = "";
myObj = new Object();
myObj.onChanged = function() {
trace("mybox's been changed");
};
_level0.a.onChanged = function() {
switch (_level0.a.text) {
case "Hello" :
trace("case 1 tested true");
break;
case "hi" :
trace("case 2 tested true");
break;
case "Hi" :
trace("case 3 tested true");
break;
default :
trace("no case tested true");
}
}
__________________ ------------------------------------- LOVE 2 LIVE | CHAOS 4 ORDER Geändert von Sir Freako (11-04-2006 um 19:17 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |