Moviclip dynamisch zentrieren!

jackassol

Erfahrenes Mitglied
Hallo gibt es eine Möglichkeit einem Moviclip bei jeder Skalierung des Films dynamisch zu zentrieren?

D.H. der Moviclip soll ich immer selber zentrieren..aber dynamisch in Form eines Tweens.....geht das?
 
Hi,

Code:
Stage.scaleMode ="noScale";
Stage.align = "TL";

var sl = new Object();
sl.onResize = function() {
    meinMC.slideTo(Stage.width / 2 - meinMC._width / 2, Stage.height / 2 - meinMC._height / 2);
}

Stage.addListener(sl);

sl.onResize();

meinMC.slideTo = function(dx, dy) {
    this.onEnterFrame = function() {
        this._x += (dx - this._x) / 4; // statt "4" andere Zahlen, um Geschwindigkeit zu variieren
        this._y += (dy - this._y) / 4; // hier ebenso ;)
        if (Math.abs(dx - this._x) < 1 && Math.abs(dy - this._y) < 1) {
            this._x = dx;
            this._y = dy;
            delete this.onEnterFrame;
        }
    }
}

Gruß
.
 
Fehler glaub ich....
PHP:
**Fehler** Szene=Szene 1, Ebene=Ebene 1, Bild=1:Zeile 6: Keine Eigenschaft mit dem Namen '_width' vorhanden.
         meinMC.slideTo(Stage._width / 2 - meinMC._width / 2, Stage.height / 2 - meinMC._height / 2);

Anzahl der ActionScript-Fehler: 1      Gemeldete Fehler: 1

kommt bei der Ausgabe...

Also wollt das so machen das ich in ein Moviclip einen anderen reinladen...sobald der geladene Moviclip geladen ist(ist größer als der erste) soll ich der Moviclip dynamisch zentrieren..geht das damit?
 
Sorry, die width-Eigenschaft des Stage-Objekts wird ohne Unterstrich notiert (ist korrigiert). Mit ein wenig Initiative beim Debuggen hättest Du das allerdings selbst herausgefunden.

Wenn Du das Beispiel auf eingeladene Clips erweitern willst, müsstest Du schon etwas mehr über Deine Struktur und Deinen bisherigen Code preisgeben.

Gruß
.
 
ok danke bis dahin erst mal...also hatte mir das so vorgestellt:

1.hab einen Moviclip bei dem der Mittelpunkt des Moviclips immer genau in der Mitte des Filmes sein soll(so wie im beispiel oben)..

Das Ding ist aber das im Moviclip 2 Bilder sind...

Das 2. Bild ist zuerst genau hinter dem ersten..aber tweent sich so bei ca. dem 40.Bild(Zeitleiste) genau links neben das 1.

D.h. jetzt wird der Moviclip größer.....d.h. Mittelpunkt verschieb sich.....und nun soll sich der Moviclip so wie im Beispiel wieder zentrieren...


jooo ich hoffe es wurde ungefähr verstanden..danke dir
 
Hi,

1.hab einen Moviclip bei dem der Mittelpunkt des Moviclips immer genau in der Mitte des Filmes sein soll(so wie im beispiel oben)..
Exakt das sollte mein Code bewirken.

Das Ding ist aber das im Moviclip 2 Bilder sind...
Kein Ding. :)

D.h. jetzt wird der Moviclip größer.....d.h. Mittelpunkt verschieb sich.....und nun soll sich der Moviclip so wie im Beispiel wieder zentrieren...
Nimm diesen Block:
Code:
if (Math.abs(dx - this._x) < 1 && Math.abs(dy - this._y) < 1) {
        this._x = dx;
        this._y = dy;
        delete this.onEnterFrame;
}
aus der Methode "slideTo" heraus - dadurch sollte die Anpassung dauerhaft stattfinden.

Gruß
.
 
Hmm hab mal ne Beispiel-Datei angeheftet!

will nich richtig funktionieren.....

PS: beim dem ca.100. Bild kommt eine schwarzläche nach rechts getweent...aber es vierbiebt sich erst zur Mitte wenn ich den Film skalieren..warum?
 

Anhänge

Hi,

wenn sich die Breite des MC ändert, muss diese ständig in der Funktion "slideTo" überprüft werden (mein erstes Beispiel rechnet die Maße des Clips ja schon beim Aufruf [ sprich: nur beim onResize der Bühne ] in die Zielposition ein).

So sollte es klappen:
Code:
Stage.scaleMode ="noScale";
Stage.align = "TL";

var sl = new Object();
sl.onResize = function() {
    meinMC.slideTo(Stage.width / 2, Stage.height / 2);
}

Stage.addListener(sl);

sl.onResize();

meinMC.slideTo = function(cx, cy) {
    this.onEnterFrame = function() {
        this._x += ((cx - this._width / 2) - this._x) / 4;
        this._y += ((cy - this._height / 2) - this._y) / 4;
        if (Math.abs(dx - this._x) < 1 && Math.abs(dy - this._y) < 1) {
       	 	this._x = dx;
        	this._y = dy;
        }
    }
}

Gruß
.
 
Zurück