| |||||||
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: Nov 2005
Beiträge: 548
| Workaround für nachgeladene MCs gesucht...
Für eine Anwendung [Flash 5] mit mehreren "Szenen" (gemeint sind hier einzelne MCs, die nach Bedarf auf der Bühne angezeigt werden sollen) möchte ich die Szenen nur nach Bedarf "kapitelweise" dynamisch nachladen. Die Szenen eines Kapitels liegen frameweise in einer externen swf vor. Das Kapitel kann dann per loadMovie() in einen MC geladen und die einzelnen Szenen des Kapitels mit gotoAndStop(); angezeigt werden. Soweit kein Problem. Beim Umschalten von einer Szene in die nächste (innerhalb des aktuell geladenen Kapitels) muss ich aber vor dem Anzeigen der neuen Szene in dieser ein paar Veränderungen vornehmen (MCs ein/ausblenden z.B.). Solange soll noch die letzte Szene angezeigt werden. Nun stehe ich vor dem Problem, dass ich eigentlich zwei Instanzen des nachgeladenen Kapitels bräuchte: die eine ist vorn und zeigt den aktuellen Frame, die andere ist hinten bzw. ausgeblendet. Die hintere wird auf den neuen Frame gestellt und dieser verändert; wenn fertig werden die beiden Instanzen getauscht (mittels swapDepth() oder ein/ausgeblendet und die Zeiger auf front/back aktualisiert). Nach Threads wie folgendem scheint das Duplizieren eines nachgeladenen MCs aber nicht möglich zu sein: Bilder Extern & duplicateMovieClip Und nach einer von mir kürzlich gestellten Frage kann auch attachMovie mit nachgeladenen MCs nicht verwendet werden. (Schlechte) Alternativen auf die ich bisher gekommen bin: a) Den Film zweimal laden (je einmal in einen MC namens front und back). In der Regel cachen Browser ja die Dateien, somit sollte der zweite Ladevorgang schneller gehen (nicht getestet - ist das überhaupt so? Und was wenn der User den Cache deaktiviert hat? Hat Flash einen eigenen Cache?) b) Ich arbeite mit nur einer Instanz und fade für die Zeit der Veränderung die komplette Szene aus. Was mir aber nicht besonders gefallen würde. c) Ich lade die Kapitel nicht nach, sondern binde sie direkt in das Hauptmovie ein. Das ist der momentane Stand, aber aus verschiedenen Gründen inakzeptabel. Ich hoffe es wurde in etwa deutlich was ich erreichen möchte. Fällt jemandem von euch ein Workaround für mein Problem ein? |
| | |
| | #2 (permalink) |
| von natur aus sanft Registriert seit: Jan 2002 Ort: Landshut
Beiträge: 1.404
| bisserl verwirrt bin... Also dein Vorhaben so wie ich es verstanden habe: Pack deine UnterSeiten (Szenen= falsch gewählter Begriff.. eher MCs nehmen) in eigen SWFs... mach nen Main.SWF... auf dem platzierst du nen ContainerMC(leereMC)... in den lädst du dann die restliche SWFS rein... oder alles in eine Datei und per attachMovie die MCs ebenfalls in nen Container rein attachen...aus der Bibliothek... je nach Aufwand/Größe ne angenehme Sache... oder schieb mal deine Datein hoch damit man sich n Bild amchen kann.. grzc.chris
__________________ ------------------------------------------------ Lieber mal nachfragen als stundenlang doof rumsitzen ;) Landshuter Hochzeit 1475 ------------------------------------------------ |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Nov 2005
Beiträge: 548
|
Ok, dann hole ich noch etwas weiter aus. Sorry für den vielen Text. Stell dir ein Adventure vor. Ein komplettes Kapitel mit vielleicht 5 Frames wurde bereits erfolgreich in einen Container-MC geladen: z.B. "Haus.swf", darin die Frames mit den Labels "Flur", "Küche", "Wohnzimmer", "Bad", "Schlafzimmer". In jedem Frame befindet sich ein entsprechendes Hintergrundbild sowie weitere Objekte (MCs). Angezeigt wird gerade der Flur: meinContainer.gotoAndStop("Flur"). Das funktioniert alles ohne Probleme. Nun gehe ich per Klick ins Wohnzimmer, was ich im Prinzip durch ein einfaches meinContainer.gotoAndStop("Wohnzimmer") erzielen kann. Dort kann aber z.B. ein Buch auf dem Tisch liegen, dieses könnte aber auch schon im Inventar sein, was ich jederzeit durch eine Variable abfragen kann. Gehen wir davon aus, das Buch ist bereits im Inventar und soll nicht mehr angezeigt werden. Bevor nun das Wohnzimmer mittels meinContainer.gotoAndStop("Wohnzimmer") angezeigt wird, will ich prüfen ob der MC "Buch" in diesem Frame ein- oder ausgeblendet werden muss. Den MC "Buch" im Frame "Wohnzimmer" kann ich aber verständlicherweise erst beeinflussen, nachdem der Frame "Wohnzimmer" angezeigt wird, vorher nicht. So sieht der User aber das Buch kurz aufblitzen bevor es entfernt werden kann. Und das ist natürlich unerwünscht. Die übliche Vorgehensweise (jedenfalls in anderen Umgebungen als Flash) ist das Arbeiten mit einem verdeckten Screen: Ich brauche den Container, in den das Kapitel "Haus.swf" geladen wurde, ein zweites Mal im Hintergrund (verdeckt bzw. ausgeblendet). Dort wird im Verborgenen auf den Frame "Wohnzimmer" geschaltet und das Buch bei Bedarf entfernt. Während dieser Zeit wird im ersten Container im Vordergrund immer noch der Frame "Flur" angezeigt, damit diese Veränderung für den User unsichtbar bleibt. Erst wenn das Wohnzimmer fertig ist, werden die beiden Container getauscht: das fertige Wohnzimmer wird angezeigt, der Container mit dem Frame "Flur" wird ausgeblendet und fungiert beim nächsten Framewechsel als verdeckter Screen. Oder als Pseudocode: Code: //initialize
//_root.container1 contains all screens of actual chapter as labeled frames.
container1.duplicateMovieClip("container2",99);
frontscreen.gotoAndStop("Flur");
show(frontscreen);
hide(backscreen);
frontscreen=container1; //points always to visible container
backscreen=container2; //points always to invisible container
//change user location
function changeRoom(newRoom){
//do everything in backscreen
backscreen.gotoAndStop(newRoom);
doSomeChanges(backscreen);
waitUntilBackscreenDone();
//flip screen pointers when done
helpvar=frontscreen;
frontscreen=backscreen;
backscreen=helpvar;
show(frontscreen);
hide(backscreen);
} Allerdings funktioniert dies nicht mit nachgeladenen MCs, da ich diese nicht duplizieren darf, weder mit duplicate noch mit attach. Das Nachladen ist jedoch aus mehreren Gründen notwendig, u.a.: Teamarbeit an verschiedenen MCs, Ladezeiten, Organisation größerer Projekte, physikalisches Trennen von Engine, Interface und Kontent usw. Ein paar (schlechte) Workarounds habe ich im ersten Post genannt, wirklich zufrieden bin ich damit nicht. Wenn jemand eine bessere Idee hat, wie ich solche "Flipscreens" auch mit nachgeladenen MCs verwirklichen kann, wäre das prima. |
| | |
| | #4 (permalink) |
| Der Wunderhund Registriert seit: Jun 2002 Ort: Hattingen
Beiträge: 10.515
|
>Den MC "Buch" im Frame "Wohnzimmer" kann ich aber >verständlicherweise erst beeinflussen, nachdem der >Frame "Wohnzimmer" angezeigt wird, vorher nicht. bin nicht sicher ob ich alles verstanden habe, aber ... deine externe Haus.swf muß ja sowieso komplett geladen werden, also würde ich die räume nicht in frames aufteilen, sondern alle gleichzeitig ab dem ersten frame auf eine jeweilige ebene packen. du mußt sie allerdings vorher alle auf _visible = false stellen (dabei sollten auch mögliche buttons-funktionen inaktiv werden. ich hoffe es sind schon mcs). das umstellen zwischen den räumen passiert dann nicht über den wechsel von frames, sondern über das false/true-stellen des _visible wertes. sinn des ganzen ist, daß du dann jederzeit auf alle mcs aller räume zugreifen kannst und diese ggf. einzeln deaktivieren kannst, obwohl der ganze raum noch unsichtbar ist. gruß, gaspode |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |