Bessere Art externe swfs einzubinden als loadMovieNum ?

herrgarnele

Erfahrenes Mitglied
Einen schönen guten Abend zusammen!

Ich entwickle gerade ein Spiel samt dazugehörigem Menu.
Nun ist das gesamte Menu (was vor dem Spiel erscheint) fertig.
Drückt man auf 'Start', wird das Spiel geladen per:
Code:
loadMovieNum("game.swf", 0);
Ich habe in einem anderen Thread hier gelesen dass die Tiefenbezeichnung "0" eigentlich falsch ist, daher wird der Haupt-MC überschrieben.
Das ist mir eigentlich auch ganz recht, denn das Menu wird im Spiel ohnehin nicht mehr benötigt.

Nun habe ich aber das Problem, dass die game.swf, wird sie aus dem Menu heraus geladen, manchmal zu langsam bzw. ruckelig abgespielt wird. Sie ist aber nur 700kb gross, also an zu vielen Daten kanns nicht liegen..

Da ich nun vermute, dass es an der loadMovieNum-Methode liegt, meine Frage:

Gibt es bessere Wege, die game.swf zu laden als per loadMovieNum?
Vor allem in Hinblick darauf, dass die menu.swf nicht mehr gebraucht wird, sobald das Game läuft?
 
Hallo.

Wieso benutzt du nicht einfach einen ganz normalen Link zu einer html-Datei in der das Spiel eingebettet ist? Und viel wichtiger: wieso benutzt du 2 verschiedene swfs für Spiel und Menü?

LG,
jens
 
Hi Jens!
Danke erstmal für Deine Antwort!

Das Spiel muss auch als Standalone funktionieren, d.h. nur im FlashPlayer.
Daher funktioniert ein html-Link leider nicht.

Dass es 2 swfs sind liegt einerseits an der Entwicklungsgeschichte des Spiels.
Andererseits sollte das doch kein Problem darstellen, oder!

Daher bleibt ich bei meiner Frage:
Gibts es bessere Wege als mit loadMovieNum()?
 
Zuletzt bearbeitet:
Hi,

wenn der Preloader/Hauptfilm überschrieben werden soll, ist loadMovieNum nicht unbedingt die schlechteste Variante. Du solltest das eigentliche Spiel aber so gestalten, dass es erst mit Aktionenen (Abspielen, Ereignisse) beginnt, wenn es komplett geladen ist. Nach dem Ladevorgang (wie man den überwacht, findest Du mit der Suchfunktion und dem Begriff "Preloader" heraus) kannst Du dem Spiel mitteilen, dass es starten soll.

Alternativen zu loadMovieNum wären die loadMovie-Methode und die MovieClipLoader-Klasse.

Gruß
.
 
Hi Tobias!
Auch Dir danke erstmal für die Antwort!

Das Spiel wird eigentlich nur lokal gespielt, also nicht online.
Muss ich trotzdem einen Preloader einbauen bzw. kann es sein dass das Ruckeln und Verzögern in der games.swf von einem fehlenden Preloader her rührt?
 
Die Quelle des Ruckeln lässt sich, ohne die Dateien zu sehen, leider nur sehr schwer bestimmen. Kommt das Ruckeln denn nur am Anfang oder die ganze Zeit?

Wenn es nur am Anfang kommt solltest du einen Preloader einbauen. Dies scheint mir aber die unwahrscheinlichere Variante zu sein.

Wenn es die ganze Zeit ruckelt, sind das Spiel und das Menü zusammen zu leistungsintensiv. Wenn nur das Spiel zu sehen ist, solltest du das gesamte Menü entladen und es nicht im Hintergrund weiterlaufen lassen.

Läuft das Spiel denn alleine ruckelfrei? Also die game.swf?

LG
B.
 
Letzteres ist der Fall!
Das Spiel läuft alleine genau so wie es sollte - ohne Verzögerungen und Ruckeln.

Ergo sollte ich die Navigation "entladen"!?
Dazu hätte ich zwei Fragen:

1. dachte ich, dass die Navi mit
Code:
loadMovieNum("game.swf", 0);
überschrieben wird. Muss ich diese dann trotzdem "entladen"?

2. bedeutet "entladen" die Methode unloadMovieNum() ?
Denn eigentlich ist die Navi ja der Hauptfilm. Und den kann ich ja nicht entladen, oder!?

:suspekt: Uh sorry falls ich dumme Fragen stelle, wird langsam spät..

// EDIT: Falls es hilft, kann ich die Dateien gerne posten. Ich befürchte nur dass das den Rahmen hier sprengt, da da auch noch diverse .as-Dateien reinspielen..
 
Das mit dem Überschreiben ist nicht der Fall. Es läuft (wortwörtlich) im Hintergrund weiter, der neue Film liegt nur obendrauf.

Probier es mal mit einem neuen Frame im menue.fla, welcher komplett leer ist. Dort schreibst du dann in ein Schlüsselbild deine Ladebefehle. Auf den SpielStarten-Button machst du halt ein gotoAndStop(2) oder so.

Ruckelts noch?
 
Ah okay, dann wird er nicht überschrieben im eigentlichen Sinn, sondern es wird nur drÜBER was anderes geschrieben :)

Das mit dem neuen Frame habe ich versucht, konnte aber keine signifikante Besserung sehen..

Da es jetzt etwas unübersichtlich wird, hab ich mal die Dateien hochgeladen: Link.
Ich hoffe Du steigst durch..

Danke für die Mühen schonmal!!
 
Das mit dem Überschreiben ist nicht der Fall. Es läuft (wortwörtlich) im Hintergrund weiter, der neue Film liegt nur obendrauf.
Nein, der Hauptfilm läuft in Stufe 0, und wird durch das Einladen eines anderen in ebenfalls Stufe 0 tatsächlich überschrieben. Probier einfach mal:
Code:
var c = 0;

this.onEnterFrame = function() {
	trace(c ++);
}

loadMovieNum("wasanderes.swf", 0);
- die onEnterFrame-Methode wird recht schnell beendet.
.
 

Neue Beiträge

Zurück