| |||||||
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) |
| dreizeiler Registriert seit: Sep 2004 Ort: Berlin
Beiträge: 1.411
| Erstellen einer größeren Applikation | Absturz beim zusammenfügen
Ich arbeite momentan an einer größeren Flash Applikation, die wiederum im prinzip aus kleineren Applikationen besteht. meine Vorgehensweise war der einfachheit halber für jede einzelne Applikation einen eigenen Ordner im Projektordner anzulegen, der jeweils die fla bzw. swf sowie alle relevanten Klassen beinhaltet. Im Grunde habe ich jedes App wie ein eigenständiges Programm konstruiert. Nun ist es nicht zuletzt aus Präsentationszwecken an der Zeit die Einzelnen Applikationen zusammenzuführen und mit einem Menü zu versehen. Ich habe im Projektordner einen neuen Film angelegt, welcher das Menü erzeugt und mit der Funktionalität ausgestattet sein sollte bei klick die einzelnen swf's jeweils zu laden bzw zu entladen, so dass der entsprechende Content angezeigt wird. Das Problem ist nun folgendes: beim ersten klick auf einen beliebigen Menübutton wird der entsrechende Film geladen und funktioniert wie er soll. Wenn man nun allerdings einen 2. Button klickt sollte eigentlich der momentane Content mittels unloadClip entladen werden und daraufhin der neue Content geladen werden. jedoch funktioniert nun keine Applikation mehr, bzw. führt die Applikation keine aktionen mehr aus. sie ist wie tot. Es wird keine DB verbindung hergestellt keine debug traces werden ausgegeben gar nichts. auch nicht wenn man zu der ersten Applikation zurück klickt. Ich habe die einzelnen Programme nach MVC Programmiert (nicht strickt) kann es ein Fehler gewesen sein, dass die Einzelnen Programme jeweils (in ihren ordnern) Klassen einkompiliert haben, welche dieselben Namen haben? (Model Controller ...) und Flash beim nacheinander reinladen der swf's damit nicht zurecht kommt? Kann mir jemand sagen woran das liegen mag? und bei der gelegenheit möchte ich euch gerne Fragen, wie Ihr größere Applikationen in Angriff nehmt. vielen Dank!!! |
| | |
| | #2 (permalink) |
| Nagelneuer User Registriert seit: Dec 2005
Beiträge: 924
|
Ja, das könnte der Fehler sein. Ich würde jeder Anwendung einen eigenen Namespace spendieren. mfg. h
__________________ The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D |
| | |
| | #3 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
Flashfilme gleicher Versionen die ineinander (wie schreibt man das?) geladen werden, teilen sich ein und das selbe _global-Object, in welchem wiederum Klassen abgelegt werden. Das kann also nicht funktionieren.
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #4 (permalink) |
| dreizeiler Registriert seit: Sep 2004 Ort: Berlin
Beiträge: 1.411
|
vielen dank erstmal.. eine dieser Anwendungen beinhaltet eine art yugoplaufleiste, welche ich irgendwann mal programmiert habe. zu sehen hier: klick auch in AS2 Programmiert verwende ich hier allerdings keinerlei Model,View... Klassen. nun verhält es sich so: wenn man von dieser Laufleiste zu einem anderem Menüpunkt springt und dann dorthin wieder zurück, wird diese offensichtlich auch nicht mehr initialisiert und die Bilder fahren einfach aus dem Bild anstatt sich ans Ende ranzuhängen. Wie ist das mit dem gemeinsamen _global Object? werden die gespeicherten Objekte einfach im Speicher gelassen, wenn ich den MC remove oder unloade? kann ich den Speicher löschen? das Oben beschriebene Problem beschreibt vielleicht, dass es über den Namespace hinaus initialisierungsschwierigkeiten durch chaches gibt. doch was ist dann die lösung für mein Problem? (panik |
| | |
| | #6 (permalink) |
| dreizeiler Registriert seit: Sep 2004 Ort: Berlin
Beiträge: 1.411
|
ich habe einen test gemacht, indem ich ein menü mit 2 buttons entworfen habe. der eine button lädt ein swf auf _level1 und der 2. button entlädt diesen wieder. danach habe ich mir die variablen ausgeben lassen (debuggen->variablen auflisten) und musste feststellen, dass sich tatsächlich noch alles im speicher befindet.: PHP-Code: ich habe mich naiv darauf verlassen, dass mit removeMovieClip oder unloadMovie oder gar einen mc auf dieselbe tiefe mit demselben namen zu laden alle relevanten objekte gelöscht werden. edit: wenn ich dann mit button 1 wieder die applikation auf level1 lade funktioniert diese bnicht mehr.. Geändert von mojave (28-04-2006 um 00:35 Uhr) |
| | |
| | #7 (permalink) |
| Nagelneuer User Registriert seit: Dec 2005
Beiträge: 924
|
Wenn du deine Klassen in verschiedene Packages steckst, sollte es kein Problem geben. ActionScript:
mfg. h
__________________ The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D |
| | |
| | #8 (permalink) |
| dreizeiler Registriert seit: Sep 2004 Ort: Berlin
Beiträge: 1.411
|
mein beispiel oben bezieht sich allerdings auf nur eine einzige applikation, welche ich lade->entlade->und wieder lade und dass sie dann nicht mehr funktioniert weil jegliche initialisierung/instanziierung ausbleibt. so ziemlich der einzige code, welcher in der fla dieses app steht ist PHP-Code: PHP-Code: und nu? |
| | |
| | #9 (permalink) |
| Nagelneuer User Registriert seit: Dec 2005
Beiträge: 924
|
Ist deine Application-Klasse statisch? Versuch es mal so: ActionScript:
mfg. h
__________________ The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D Geändert von hazy fantazy (28-04-2006 um 19:35 Uhr) |
| | |
| | #10 (permalink) |
| dreizeiler Registriert seit: Sep 2004 Ort: Berlin
Beiträge: 1.411
|
@hazy: ja das ist sie. also, das problem scheint zu sein, dass nach dem entfernen des mc's/level, in den ich die einzelnen applikationen lade das _global object vollgeballert ist mit sämtlichen objekten meiner klassen. das führt dazu, dass dieselbe applikation beim erneuten laden nicht mehr initialisiert wird. ein sehr unsauberer lösungsweg ist PHP-Code: lösung dazu wäre beim menü auf as1 zurückzugreifen und alles in die fla zu schreiben. eine bessere lösung wäre es allerdings wohl jede klasse mit einer destruktor methode zu bestücken, die beim "austauschen" bzw entladen der applikationen aufgerufen wird. ich finde das alles recht wackelig. dachte es wäre damit getan den geladenen film zu unloaden/removen. und an selbige stelle einen anderen zu laden Geändert von mojave (28-04-2006 um 19:57 Uhr) |
| | |
| | #11 (permalink) |
| Nagelneuer User Registriert seit: Dec 2005
Beiträge: 924
|
Das Problem mit der Initialisierung hast du ja nur, weil deine Klassen statisch sind. Würdest du verschiedene Packages und richtige Instanzen benutzen, hättest du das Problem nicht. Eine mögliche Lösung wäre es vielleicht, dass sich deine Klassen beim Laden bei einem SpeicherManager anmelden, der sie dann beim Entladen des MovieClips wieder aus global entfernt. Oder du benutzt haxe. Dort hat jeder SWF seinen eigenen Namespace. mfg. h
__________________ The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D |
| | |
| | #12 (permalink) |
| dreizeiler Registriert seit: Sep 2004 Ort: Berlin
Beiträge: 1.411
|
das mit dem speichermanager ist eine gute idee. ich denke, dass ich das so machen werde. dank dir hazy! allerdings möchte ich die frage nochmal in den raum stellen: wie ist eure herangehensweise für große projekte? wie schustert ihr eure sachen zusammen? |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |