| |||||||
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: Jun 2005
Beiträge: 96
| Grundlegender Aufbau / UML
Hallo Ich bin mal wieder am basteln und hatte eigentlich vor einem Jahr gedacht ich könnte meine eigene Flash - Website auf die schnelle bauen. Habe davor nur Perlscripte geschrieben, also keine OOP. Habe mir dann ein AS3 Buch gekauft und meine erste Website gebaut. http://www.ingopolster.com Für die erste ist es auch ganz gut geworden und ist in ein Paar Klassen organisiert. Es gab aber einige Probleme bei der Programmierung und vor allem zum Schluss hin wurden die Wortkarounds schon etwas häufiger. Jetzt sind wieder ein Paar Monate vergangen und ich möchte meine Website komplett neu designen. Bevor ich mich ins Programmieren stürze, was bei meiner wenigen Übung meist lange dauert, wollte ich einige Probleme meiner alten Programmierung überdenken um nicht die gleichen Fehler nochmal zu machen. Ich habe versucht das mal in einem ULM festzuhalten. ![]() Ich habe von sowas nicht viel Ahnung also bitte nicht motzen. Das Größte Problem ist das Menü. Es funktioniert aber ich frage in "Mymenue" den Eventlistener welcher button geklickt wurde und übergebe den Namen des Buttons an den Contentcontroller der damit den jeweiligen Content lädt. Code: public function load_content(contentname:String):void {
if (contentname == "People"){
loaded_content = new Gallery("people", 20);
add_hider();
}
if (contentname == "Still"){
loaded_content = new Gallery("still", 9);
add_hider();
}
if (contentname == "3-Dimensional"){
loaded_content = new Gallery("3D", 2);
add_hider();
}
if (contentname == "About"){
loaded_content = new About();
add_hider();
}
if (contentname == "Imprint"){
loaded_content = new Impressum();
add_hider();
} Wäre toll wenn es einige Anregungen gäbe, auch zur grundlegenden Modellierung solcher Klassen für meinen Zweck. Es soll nicht super toll werden aber über sauberere Schnittstellen wäre ich sehr dankbar. |
| | |
| | #2 (permalink) |
| Developer Registriert seit: Sep 2001 Ort: Unterhaching/München
Beiträge: 515
|
Hallo Howan. Erstmal Props für das Video Blackout Gefällt mir sehr gut. Wielange hastDu daran gesessen? Zu deinem Aufbau: Der ist nicht schlecht. Und deine Idee, den Namen des Button an den Controller zu schicken, der dann entscheidet, was er lädt ist ebenfalls völlig ok. Damit hast Du eine funktionierende View Klasse (Menu), zu der Du immer einen neuen Controller schreiben könntest. Natürlich ist es immer möglich alles perfekt nach Design Pattern zu lösen aber bei der größe des Projekts seh ich dazu fast keinen Anlass. Soll der Aufbau deiner neuen Site genauso aussehen? Was aus deiner UML zeichnung, die sehr übersichtlich und damit gut ist, wird nicht klar, ob Du die Namen der Button per Events an den Controller schickst. Es sieht eher so aus, als würden sich beide direkt unterhalten. Aber selbst das finde ich, wie schon gesagt, bei der Größe nicht so tragisch. Zusätzlich könntest Du noch für jeden Content Typ einen eigenen Controller erstellen, um den einen großen Controller zu entlasten. Für sehr gute Aufbautipps bzw. Erklärungen zu Design Pattern bitte hier weiterlesen: www.as3dp.com (aber hier im Forum weiterdiskutieren :-) ) Geändert von malthoff (12-03-2009 um 07:52 Uhr) |
| | |
| | #3 (permalink) |
| no guts no glory Registriert seit: May 2004 Ort: Nordhorn
Beiträge: 7.998
|
Sieht gut aus imho ... und den zu ladenden Content als String an eine Funktion zu übergeben die die Steuerung übernimmt halte ich auch für eine vernünftige Methode das zu machen ... jedenfalls mache ich das auch so: PHP-Code: das Befüllen mit Inhalten weil die Dinge die dargestellt werden sollen/müssen ja auf jeder Unterseite anders sein können.
__________________ Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke. 'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.' Geändert von readme.txt (12-03-2009 um 08:02 Uhr) |
| | |
| | #4 (permalink) | |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.897
|
Hier mal ein kleiner Versuch, der Verbesserung. Das Problem, dass du hast: es bestehen recht viele Abhängigkeiten. Schaue dir mal meine UML Diagramm an. ![]() Meiner Meinung nach musst du den Controller nicht aus der MainView herausziehen, dafür ist das Projekt zu klein. Empfange einfach die Events der MenuButtons und zeige das an, was zu sehen sein soll. Das wäre so grob skizziert meine Idee. @Ache: Zitat:
Geändert von Omega Psi (12-03-2009 um 08:16 Uhr) | |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Jun 2005
Beiträge: 96
|
Vielen Dank erstmal für die schnellen Antworten. Ich muss zugeben das ich etwas überrascht bin. Ich hatte gedacht ihr zerreist den Entwurf in der Luft. Es bleiben aber Fragen. Wenn ich mir den Entwurf von Omega Psi so ansehe verstehe ich das folgendermaßen. Wenn ein Button geklickt wird, bubbelt der KlickEvent nach oben und wird auch erst in WebSite abgefangen. Jetzt muss abgefragt werden ob überhaupt ein Button geklickt wurde oder ein anderes Element das vll Klickevents auslösen kann. Das habe ich bis jetzt folgendermaßen gelöst. Das sieht für mich aber nach einer Notlösung aus, da es ja eigentlich nicht sein kann, das ich im Nachhinein wieder herausfinden muss wasgeklickt wurde. Wie kann ich das sauberer machen? Code:
Vielen Dank schonmal an euch! Ist hier mit Abstand das beste und freundlichste Forum das ich kenne. @Dr.Ache: Das video haben wir zu dritt als Studienarbeit in ca 4-5 Wochen realisiert. Kann man bei uns Studenten nicht immer so genau sagen, da wir an vielen Sachen gleichzeitig arbeiten. lg Ingo Geändert von Howan (12-03-2009 um 16:28 Uhr) |
| | |
| | #6 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.897
|
Ich würde das so machen, dass ich in der Menu Klasse den MouseEvent.CLICK abfange und dann nach aussen hin einen eigenen Event dispatche, der die Information transportiert, die ich brauche um zu wissen, was ich anzeigen lassen will. Dieser Event wird in der Website Klasse verarbeitet und fertig.
|
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Jun 2005
Beiträge: 96
|
Hi Omega Sehe ich das richtig?? Mit deiner Idee erreiche ich, das die Klassen für das Menü klar vom Rest der Website getrennt sind und durch den selbst erstellten Event bekomme ich eine klar definierte Schnittstelle zur Klasse "Website". Wie würde dieser EventDispatcher aussehen? Ich werde da nicht schlau draus...... Code:
LG Ingo |
| | |
| | #9 (permalink) |
| thinkin aBout tha lib. Registriert seit: Nov 2001 Ort: Kölle
Beiträge: 1.379
| *kopfkratz*
Hmm - also traditionellerweise löse ich das über ein dictionary. Beispiel: Code: var menu: Menu = new Menu();
menu.addButton( new MenuButton( "People", new Gallery("people"), webSite ) );
menu.addButton( new MenuButton( "Gallery", new Gallery("gallery"), webSite ) );
... usw. Code: class MenuButton extends TextButton {
private var _page: IPage;
private var _webSite: Website;
public function MenuButton( name: String, page: IPage, webSite: Website ) {
super( name );
_page = page;
_webSite = webSite;
addEventListener( MouseEvent.CLICK, onClick );
}
public function onCLick( event: Event ): void
{
_webSite.showPage( _page );
}
} Code: class ShowWebsite implements ICommand {
private var _page: IPage;
private var _website: Website;
public function ShowWebsite( page: IPage, website: Website )
{
_page = page;
_website = website;
}
public function execute(): void
{
_website.showPage( _page );
}
}
new MenuButtuon( "Gallery", new ShowWebsite( new Gallery("gallery"), website ) );
__________________ Back to community with http://leichtgewicht.at |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |