8 Stimmen

Abmessungen der geladenen swf-Bühne

Hier ist die Situation - ich habe eine Shell, die eine externe .swf lädt. Nun, dass .swf ist 800x600, aber es ist eine Animation Stück, und es gibt Elemente, die aus der Bühne erstreckt. Wenn ich die .swf in die Shell lade und ihr width-Attribut aufrufe, gibt sie 1200 zurück - weil sie die Elemente einschließt, die aus der Bühne ausbrechen.

Das ist nicht das, was ich will - idealerweise gäbe es zwei Eigenschaften, eine, um die "berechnete Breite" zurückzugeben, und eine, um die "Standardbreite" zurückzugeben. Existieren diese Eigenschaften, und wenn nicht, was ist die beste Lösung?

15voto

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

swfLoader.contentLoaderInfo.width
swfLoader.contentLoaderInfo.height

Dabei werden immer die Abmessungen angezeigt, die in den FLA-Eigenschaften definiert sind. Es macht keinen Unterschied, ob Bilder, MovieClips oder andere Elemente über die Bühne hinausragen.

Le site stage.stageWidth et stage.stageHeight Eigenschaften wird immer die Breite der Bühne zurückgegeben, die Bühne ist immer die oberste SWF. Mit anderen Worten, sie entspricht immer den Abmessungen der Bühne der Shell. In einer Flash-Anwendung gibt es immer nur eine Bühne.

0 Stimmen

Danke für den Tipp mit dem Attribut "Stufe" - das ist irgendwie kontraintuitiv, nicht wahr?

0 Stimmen

Gut gemacht! Das funktioniert wirklich! Es ist mir nie in den Sinn gekommen, mir das Loader-Info-Objekt anzuschauen - ich verwende normalerweise nur eine Wegwerfvariable, um es zu halten, während ich darauf warte, dass der "echte" Inhalt geladen wird, aber ich werde es vielleicht in Zukunft versuchen und es in der Nähe behalten... danke!

0 Stimmen

Scheiße, noch besser, Sie können einfach sagen myMovieClip.loaderInfo.width, anstatt den ursprünglichen swfLoader in einer anderen Variablen zu behalten - alles, was über Loader geladen wird, behält einen Verweis zurück auf sein eigenes Loader-Objekt!

0voto

James Fassett Punkte 38290

Mark hat sehr wahrscheinlich Recht, dass die Informationen zum Inhaltslader Objekt die richtige Breite und Höhe enthält. Ich habe es nie selbst überprüft und kann es daher nicht garantieren. In den Unterlagen steht "nominal" und im Gegensatz zu "actual", also scheint es vernünftig.

Es gibt noch einige andere Möglichkeiten. Sie können die externe swf maskieren. Erstellen Sie eine Maske, die die Größe der Bühne hat, und legen Sie alle Inhalte darunter. Eine andere Idee ist, einen Movieclip zu erstellen, der auf einer rechteckigen Form basiert, sein Alpha auf 0 zu setzen, ihn bei x:0, y:0 zu platzieren und seine Breite und Höhe an die Bühne anzupassen. Geben Sie ihm einen Instanznamen und verwenden Sie dann beim Laden diesen Wert für die Größe.

0 Stimmen

Ich musste eine schnelle Lösung finden und hatte keine Zeit, mir Matts Antwort anzusehen, und meine schnelle Lösung war Ihr Vorschlag - ich habe zwei MovieClips in der geladenen .swf-Datei erstellt, einen, der den Abmessungen der Bühne entspricht, und einen, der die Grenzen umgibt und überschreitet, die durch die Elemente entstehen, die die Bühne unterbrechen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X