Hallo ,
ich habe ein Problem an dem ich mir schon seit Tagen die Zähne ausbeisse :-(
Ich lade eine externe .swf Datei in eine Haupt-Flash-Datei.
Die externe swf.Datei ist ein Animationsfilm, den ich aus Illustratordateien erstellt habe.
– Diese Animation soll als Hintergrundfilm laufen und soll sich der jeweiligen Browserfenstergröße proportional anpassen.
– Die Navigation der Site liegt dann an fester Position im Vordergrund (in der Hauptflashdatei) und soll nicht mit skaliert werden.
Hier zum Anschauen mit Hintergrund und Navigation:
fullscreentest 4
Nun mein grosses Problem: Wenn bei der externen Datei (also der Animationsfilm) die Grafiken über die Bühne gezogen wird, benutzt Flash beim Reinladen nicht die Größe der auf der Bühne sichtbaren Grafik sondern berechnet die über die Bühne hinausgehenden Grafiken mit ein....Dadurch wird beim rein laden falsch skaliert und plaziert .... und eine Skalierung findet beim Verändern der Größe des Browserfensters auch nicht statt. Gibt es da eine Lösung?
Hier zum Anschauen:
Meine Ausgangstest mit einem Hintergrund, dessen grafische Elemente auch über die Bühnengröße gehen, wobei hier alles klappt!
Fullscreentest Extern
Derselbe Test nur mit dem reingeladenen Animationsfilm
Fullscreentest 2 Extern
Hier mein Code den ich für den Hauptflashfilm zum Reinladen und der Skalierung der externen .swf verwendet habe:
PHP-Code:
Stage.scaleMode = "noScale";
Stage.align = "TL";
var bgFile:String = "bg_film.swf";
var bgWidth:Number;
var bgHeight:Number;
var ratio:Number;
// ---------- RESIZE LISTENER -----------------------
var stageListener:Object = new Object();
stageListener.onResize = function() : Void{
resizeBackground();
}
Stage.addListener(stageListener);
// ---------- MOVIELOADER FOR BACKGROUND SWF --------
var loadListener:Object = new Object();
var bgLoader:MovieClipLoader = new MovieClipLoader();
bgLoader.addListener(loadListener);
bgLoader.loadClip(bgFile, container);
loadListener.onLoadInit = function(container) : Void{
bgHeight = container._height;
bgWidth = container._width;
ratio = bgWidth / bgHeight;
ratio = Math.floor(ratio*100)/100;
resizeBackground();
}
// ---------- SCALE FUNCTION FOR BACKGROUND SWF -----
function resizeBackground() : Void{
if(Stage.width > bgWidth && Stage.height <= bgHeight){
container._height = Stage.width / ratio;
container._width = Stage.width;
}
if(Stage.height > bgHeight && Stage.width <= bgWidth){
container._height = Stage.height;
container._width = Stage.height * ratio;
}
if(Stage.height > bgHeight && Stage.width > bgWidth){
if(Stage.width / Stage.height < ratio){
container._height = Stage.height;
container._width = Stage.height * ratio;
}
if(Stage.width / Stage.height > ratio){
container._height = Stage.width / ratio;
container._width = Stage.width;
Im Anhang findet ihr die verwendeten Dateien der Tests als .fla:
Den Animationsfilm.fla (ein Auszug) als möglichen Übeltäter hier:
http://ww.zapport.de/animation_short.zip
Jede Hilfe wäre toll,
curious