2008-10-29 7 views
8

Hier ist die Situation - ich habe eine Shell, die eine externe SWF lädt. Nun, das .swf ist 800x600, aber es ist ein Animationsstück und es gibt Elemente, die von der Bühne ausgehen. Wenn ich die .swf in die Shell lade und das Attribut width aufruft, wird 1200 zurückgegeben - weil es die Elemente enthält, die aus der Stufe ausbrechen.Abmessungen der geladenen SWF-Stufe

Dies ist nicht das, was ich möchte - im Idealfall würde es zwei Eigenschaften geben, eine, um die 'berechnete Breite' zurückzugeben und eine, um die 'Standardbreite' zurückzugeben. Bestehen diese Eigenschaften und wenn nicht, was ist die beste Problemumgehung?

Antwort

15

Die Breite und Höhe der geladenen SWF, wie von der FLA definiert, mit der sie erstellt wurde, finden Sie im Objekt Loader, in das Sie die SWF-Datei geladen haben.

swfLoader.contentLoaderInfo.width 
swfLoader.contentLoaderInfo.height 

Dies zeigt immer die Dimensionen wie in den FLA-Eigenschaften definiert. Es macht keinen Unterschied, ob Bilder, MovieClips oder was Sie von der Bühne haben. Die stage.stageWidth und stage.stageHeight Eigenschaften werden immer die Breite der Bühne zurückgeben, die Bühne ist immer die oberste SWF. Mit anderen Worten, es wird immer die Dimensionen der Bühne der Shell darstellen. In einer Flash-Anwendung gibt es immer nur eine Stufe.

+0

Danke für den Tipp auf das Attribut 'Bühne' - es ist irgendwie kontraintuitiv, oder? –

+0

nett ein! Das funktioniert total! Es ist mir nie aufgefallen, das Loader-Info-Objekt zu betrachten - normalerweise benutze ich einfach eine Wegwerf-Variable, um es zu halten, während ich darauf warte, dass der "echte" Inhalt geladen wird, aber ich könnte versuchen, es in der Zukunft zu halten. . Vielen Dank! –

+0

Scheiße, noch besser, du kannst einfach myMovieClip.loaderInfo.width sagen, anstatt den originalen swfLoader in einer anderen Variablen herumzuhalten - alles, was durch Loader geladen wird, behält einen Verweis auf sein eigenes Loader-Objekt! –

0

Mark ist sehr wahrscheinlich richtig, dass das Objekt die richtige Breite und Höhe enthält. Ich habe mich selbst nie überprüft, also kann ich es nicht garantieren. Die Doktoren sagen "nominal" und kontrastieren es mit "tatsächlich", so scheint es vernünftig.

Es gibt ein paar andere Optionen. Sie können das externe swf maskieren. Erstellen Sie eine Maske mit der Größe der Bühne und legen Sie den gesamten Inhalt darunter. Eine weitere Idee besteht darin, einen Movieclip basierend auf einer rechteckigen Form zu erstellen, indem Sie ihn auf 0: 0, 0: 0 setzen und die Breite und Höhe an die Bühne anpassen. Geben Sie ihm einen Instanznamen und dann, wenn es geladen ist, verwenden Sie diesen Wert für die Größe.

+0

Ich musste eine schnelle Reparatur machen und hatte keine Zeit, Matts Antwort zu überprüfen, und meine schnelle Lösung war dein Vorschlag - ich habe zwei MovieClips innerhalb der geladenen .swf erstellt, eine, die den Dimensionen der Bühne entsprach, und eine davon umgeben und überschritten die Grenzen, die durch die Elemente geschaffen wurden, die die Bühne brechen. –

Verwandte Themen