| |||||||
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) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
| filesystem "nachbauen"
Ich möchte für eine Anwendung eine art filesystem bauen so wie man es von einem Betriebssystem kennt. Wenn dann der User von der Anwendung aus ein Verzeichniss auslesen lässt will ich in Flash den Inhalt dieses Verzeichnisses nachbauen. Ich kann von den Objekten der Klasse "Directory" und "File" die aktuelle grösse der Datei ermitteln. Wenn ich aber nun einen Ordner "Desktop" ( bezieht sich auf meine Anwendung ) anlege und in diesem wiederum einen Ordner "pics" und dann nachträglich in "pics" Dateien einfüge bekommt der Ordner "Desktop" leider nicht die Änderung der Dateigröße des Ordners "pics" mit ( was ja auch momentan logisch ist ). Wie könnte man dieses Problem am besten aus der Welt schaffen? Hier ein kleines Beispiel: ( das geht ) PHP-Code: PHP-Code: ps.: Falls sich einer wundert warum ich "new com.rendner.as2.filesystem.File( ... )" anstatt "new File( ... )" schreibe, das liegt daran das es von Flash selber schon eine Klasse File gibt und Flash sonst diese einbinden will anstatt meiner. |
| | |
| | #2 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
|
Eine Idee hätte ich, auf mein Beispiel bezogen müsste sich der Ordner "Desktop" beim Ordner "pics" als Listener anmelden. Dann kann der Ordner "pics" bei Änderung der Dateigrösse dieses den listenern kundtun. Werde das mal umsetzen, falls eine eine bessere Idee hat nur her damit. |
| | |
| | #3 (permalink) |
| Flashaholic Registriert seit: Feb 2003 Ort: Berlin
Beiträge: 1.459
|
Also ich würde zunächst eine neue Methode einführen, addDirectory( dir : Directory ) und eine weitere Methode getDirectorySize() anstatt das ganze mit dem Visitor Pattern zu lösen. Beim adden eines neuen Directorys kannst du mit getDirectorySize() die größe des untergerodnetetn Dirs zu der größe des übergeordneten adden. Ich bin immer der meinung, Keep it Simple. da mit Visitorn und Listenern zu arbeiten fände ich übertrieben. MfG Alex
__________________ TVNEXT Solutions |
| | |
| | #4 (permalink) | ||
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
| Zitat:
Das 2te Beispiel im ersten Post verdeutlicht das, dort wird ein neuer Ordner erstellt und dieser in einen bereits vorhandenen Ordner gelegt. Wenn ich aber jetzt erst die Dateien in den zuletzt erstellten Ordner lege bekommt der "Hauptordner" dies nicht mit und "denkt" das die grösse des Ordners immer noch 0 sei. Zitat:
Hatte gedacht das mit den Visitorn würde die Klasse "Directory" etwas leichter machen da dann nicht zuviel in dieser steht und diese nicht zu komplex wirkt. Geändert von rendner[i] (28-05-2006 um 14:50 Uhr) | ||
| | |
| | #5 (permalink) |
| Flashaholic Registriert seit: Feb 2003 Ort: Berlin
Beiträge: 1.459
|
LOL aso, ja ds hab ich mal collkommen übersehen ![]() also na da bietet es sich doch an das adden der size dem File zu überlassen. also ich adde nen ordner zu einem ordner mit der methode addDirectory() (ich würde ne eigene methode für machen, intern kann sie ja wieder umgebogen werden, aber die API bleibt deutlicher) okay ich hab nun d2 in ordner d1. wenn ich nun ein file adde wird die größe ausgelesen und an den übergeordneten Directory object vermittelt, Listener wäre da sicherlich eine lose bindung aber oversized. also in eta so d1 = new Directory(); d2 = new Directory(); d1.addDirectory( d2 ); --> intern wird nun folgendes gemacht addDirectory( dir ) { dir.setParent( this ); addSize( dir.getSize() ); dirList.push( dir ); } d2.addFile( new File() ); --> intern wird nun folgendes gemacht addFile( file ) { file.setParent( this ); addSize( file.getSize() ); parent.updateSize(); fileList.push( file ); } dadurch hast du eine feste bindung welcher aber naheliegen ist, wenn du eh noch listener brauchst dann kannst du das auch mit einem EventDispatcher lösen. Ich sehe da nun nicht die Notwendigkeit. mögliche Events wären onFileAdd / Remove, onDirectoryAdd / Remove. Die EventDispatcher lösung wäre sicherlich spannend ![]() mfg alex
__________________ TVNEXT Solutions |
| | |
| | #6 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
|
Danke das sieht schon mal besser aus als die Idee mit dem EventDispatcher .Hatte auch nicht daran gedacht das man den "Überordner" bei jedem Ordner speichern sollte ( dir.setParent( this ); ). Werde das mal überarbeiten und bei eventuellen Problemen noch mal reinschauen. Aber noch ne kleine Frage: Wozu könnte ein File einen Verweis auf parent ( file.setParent( this ); ) gebrauchen? |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |