Browserfenster öffnen

Klingt alles sehr vernünftig. Ich hätte ja auch ein Layout, das sich der Bildschirmgröße anpasst. Wollte nur den "Freiraum" drumherum auf jeden Fall maximiert darstellen, weils einfach besser aussieht.

Ad StageListener: da gibts doch die Möglichkeit, dass sich bei einem Fenster-Resize die Inhalte neu ordnen oder zumindest zusammenschieben, mittels StageWidth minus der Breite des MCs usw.

Aber ich hab auch schon gesehen, dass sich die Inhalte beim Resize so quasi in der neuen Position "einpendeln" oder jedenfalls friction-mäßig nachschwingen. Steht das irgendwo? Das würd ich mir nämlich gerne mal reinziehen...
 
Hi,

klar, Du setzt die Objekte einfach nicht direkt (über _x und _y) auf die Zielposition, sondern verwendest eine Transition. Beispiel:
Code:
MovieClip.prototype.slide = function(dx, dy) {
    this.onEnterFrame = function() {
        this._x += (dx - this._x) / 4;
        this._y += (dy - this._y) / 4;
        if (Math.abs(dx - this._x) < 1 && Math.abs(dy - this._y) < 1) {
            this._x = dx;
            this._y = dy;
            delete this.onEnterFrame;
        }
    }
}

var l = new Object();
l.onResize = function() {
  mein_mc.slide(Stage.width - mein_mc._width - 10, 150);
}
Stage.addListener(l);

Gruß
.
 
Sieht toll aus, aber, grübel, es funktioniert bei mir leider nur in der Preview innerhalb der Arbeitsumgebung, nicht aber, wenn man die swf alleine öffnet oder eingebunden in html. Da mach ich wohl was falsch?
 

Anhänge

  • Resize_Test.zip
    6,9 KB · Aufrufe: 15
Hi,

Du hast das:
Code:
Stage.scaleMode = "noScale";
Stage.align = "TL";
vergessen. Wenn der gesamte Film skaliert wird, ändert sich auch nichts an der "relativen" Position. ;)

Gruß
.
 
Oh Mann. Ja, jetzt gehts. Das Einzige, was mir noch fehlt, ist der Befehl, dass sich das Zeugs am Bildschirm nicht erst bei der ersten Größenänderung des Fensters durch den Benutzer, sondern gleich beim Öffnen richtig anordnet - (ist wohl so was wie ...onEnterFrame...doResize...) - würdest Du mir das noch verraten?
 
Prima, prima, prima.

Und was ich sonst noch nicht versteh: Du definierst die slide-Funktion doch über den x und den y-wert, trotzdem ändert sich bei einem Resize nur die horizontale Position des MCs. Muss man da irgendwie so schreiben:
PHP:
var l = new Object();
    l.onResize = function() {
      mein_mc.slide(Stage.width - mein_mc._width - 10, 150);
      mein_mc.slide(Stage.height - mein_mc._height + 300, 500);
    }
    Stage.addListener(l);
...also die height nochmal ansprechen? Funktioniert allerdings so bei mir nicht...

Bin schon ein lästiger Kunde, oder?
 
Hi,

nö, das Ding funktioniert für x und y gleichzeitig. In meinem Beispiel habe ich lediglich für y eine feste Position angegeben, weil ich davon ausgegangen bin, dass der Clip oben ausgerichtet ist. Du kannst als zweiten Parameter durchaus etwas wie Stage.height - mein_mc._height - 30 angeben. ;)

Gruß
.
 
Zuletzt bearbeitet:
Jetzt versteh ich gar nix mehr! Wieso plötzlich "this" statt "mein_mc"? Müsste es nicht so heissen:
PHP:
var l = new Object();
   l.onResize = function() {
     mein_mc.slide(Stage.width - mein_mc._width - 10);
     mein_mc.slide(Stage.height - mein_mc._height - 30);
   }
   Stage.addListener(l);
Oder was waren diese "150" als zweiter Wert in Deinem ersten Beispiel?

Psychisch völlig zerrüttet,
H.
 
Sorry, war ein Fehler von mir. Du hast natürlich recht:
Code:
mein_mc.slide(Stage.width - mein_mc._width - 10, Stage.height - mein_mc._height - 10);
(das "this" ist mir aus Gewohnheit rausgerutscht ^^)

@Parameter: Schau Dir die Funktion "slide" doch mal an: Sie erwartet zwei Parameter, einen für die horizontale und eine für die vertikale Zielposition - zwei mal Aufrufen bringt also nichts (nicht nur deswegen, weil dann eine onEnterFrame-Methode die andere überschreiben würde).

Wenn Du als zweiten (oder ersten) Parameter eine feste Zahl angibst, ändert sich die vertikale (oder horizontale) Position natürlich nicht. ;)

Gruß
.
 

Neue Beiträge

Zurück