2009-07-02 6 views
1

Ich habe eine Frage, wie man den Eltern-Movieclip und nicht den Kind-Movieclip transformiert ... Ich habe einen MovieClip, der einen Bildlader und einige Griffe als MovieClip enthält. Die handle movieclips werden verwendet, um das Mausereignis zu hören, um eine solche Funktion zur Skalierung der Drehung und Übersetzung des übergeordneten Movieclips zu verwenden. Das Problem hier, wenn ich den Movieclip skaliere oder rotiere, drehen und skalieren die Griffe, obwohl ich möchte, dass sie dem übergeordneten Movieclip folgt, während der Eltern-Movieclip rotiert, aber ich möchte auch nicht, dass die Griffe skalieren.Skalieren Sie den untergeordneten MovieClip nicht?

Gibt es eine Möglichkeit, die Skalierung der Griffe zu vermeiden.

Danke

Antwort

3

Wenn Sie mit dieser Struktur nicht stecken würde ich nur die Dinge neu ordnen. Zum Beispiel würde ich es ein bisschen wie diese bauen:

- container 
    - handles 
    - image loader 

diese Weise können Sie nur über die Platzierung der Griffe an den richtigen Stellen zu kümmern, anstatt mit Skalierungsfragen.

Wenn Sie dieselbe Struktur beibehalten müssen, müssen Sie die Skalierung der Griffe so einstellen, dass sie die Inverse der Skala des übergeordneten Elements ist. Wenn die Skalierung des übergeordneten Elements beispielsweise 2 ist, möchten Sie, dass die Skalierung des Handles 0,5 ist. Alles, was Sie tun müssen, um die Skalierung des Griffs zu berechnen, ist 1 durch die Elternskala zu teilen.

0
  1. Überschreiben Sie die set height und set width Funktionen in der Mutter MC (man könnte scaleX und scaleY auch tun).
  2. In den überschriebenen Funktionen den Wert gesetzt, durch Super aufrufen und dann die scaleX überprüfen/scaleY
  3. stellen Sie die scaleX(für Breite) oder scaleY(für Höhe) des Kindes MC zu 1./scaleX(Breite) oder 1./scaleY(Höhe)

Das war einfach.

0

In einem OnEnterFrame-Handler oder etwas Ähnliches setzen Sie scaleX und scaleY auf 1/(parent.scaleX) und 1/(parent.scaleY).

4

Try this:

inside_mc.addEventListener(Event.ENTER_FRAME, function(){ 
    inside_mc.scaleX = 1/inside_mc.parent.scaleX; 
    inside_mc.scaleY = 1/inside_mc.parent.scaleY; 
}); 
+0

Terrific! Mit diesem konnte ich die Breite meiner Unterobjekte frei einstellen. Es erlaubt mir auch, scale9grid für jedes Kindobjekt auf diese Weise zu verwenden: this.mychild.scaleX = 1/this.scaleX; this.mychild.width * = this.scaleX; Danke! – XPac27

0

was Sie desto komplizierter Weg, es zu tun, beschrieben ist, und es nicht genau die Größe/neu positionieren und mehr CPU-Essen ist. Der beste Weg es zu tun (was übrigens zu mir kam, während ich schlief) ist, ein neues Kind zu erstellen, es backgroundMC zu nennen (der Name sollte es klar machen) und backgroundMC zu ändern, nicht das Elternteil. Der Eltern wird automatisch auf die Größe der Größe geändert, aber die untergeordneten Fenster werden nicht skaliert