Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-05-2011, 09:50   #1 (permalink)
Neuer User
 
Registriert seit: May 2011
Beiträge: 14
Koordinatensystem bei dynamisch zusammengeführten movieclips

Hallo,

2 Fragen zum gleichen Thema.
1. Ich füge zur Laufzeit 2 movieclips in einem neuen movieclip (container) zusammen.
Wenn ich dann den container bewege erhalte ich negative container- Koordinaten auf der Bühne. Ich habe dies schon einmal "von Hand" in der
IDE von Flash gemacht - da blieb der Ursrung der Bühne oben links bei 0/0.
Ich weiß, daß ein movieclip intern sein lokales Koordinatensystem mitbringt, aber der container als movieclip wird doch an der Bühne ausgerichtet - oder habe ich da etwas falsch verstanden?

2. Ich habe dann zum Testen von Hand einen container auf die Bühne gelegt und dynamisch einen movieclip (Kreis) eingefügt. Der bleibt aber unsichtbar - der container ist transparent.

Die Objekthierarchie ist korrekt - siehe trace in der kleinen Demo, wo ich diese 2 Fälle isoliert und dargestellt habe.
----------------------------------------------------------------------------------------------------------------------------------------------------
Das Verrückte ist, daß ich als AS3 Anfänger die schwierigeren Sachen eher hinbekomme als die Leichten - ist das typisch für AS3 oder liegt das an mir?

Für einen Hinweis, der mich von der Wand vor der ich stehe, wegholt, wäre ich sehr dankbar.

riester
Angehängte Dateien
Dateityp: fla merge_movieclips.fla (11,0 KB, 1x aufgerufen)
riester ist offline   Mit Zitat antworten
Alt 18-05-2011, 10:06   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
nur am rande erwähnt:
die bühne selbst ist ein movieclip. und kann grundsätzlich wie ein mc behandelt werden
root.rotation=15; // ist selbstverständlich möglich. sinngemass kann man auch x,y,scale ... ändern


jedes movieclip hat ein eigenes koordinatensystem
standardmässig steht der koordinatenursprung von der bühne links oben, rotation ist null und skalierung ist 100%
negative werte sind ganz normal, das steht dann weiter links oben

angenommen du setzt 'A' auf die bühne
und in 'A' drinn gibt es 'B' bei position x=50, y=100
das gilt dann für B vollkommen egal wo sich A befindet.

wenn du A bewegst und drehst und skalierst, dann bewegen sich B mit, weil sich für B NICHTS geändert hat. B 'denkt' immer noch, es würde bei x=50, y=100 stehen, hätte keine drehung und keine skalierung (und hat das auch innerhalb von A)

angenommen du willst jetzt wissen wo B auf der bühne steht, dann musst du rechnen:
position von A + position von B (in A) geteilt durch die skalierung von A und dann noch die rotation von A mit berücksichtigen ... und bei mehrfacher schachtelung sinngemäss ..
oder einfach:
// diese lokale koordinate von B
var p = {x:0, y:0}
// befindet sich global bei
var p = B.localToGlobal(p);
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (18-05-2011 um 10:15 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 18-05-2011, 10:11   #3 (permalink)
Odin zum Gruße!
 
Benutzerbild von Oxigan
 
Registriert seit: Nov 2006
Ort: Ösiland
Beiträge: 327
schreibs doch einfach so:
PHP-Code:
// warum ist der Kreis unsichtbar ???
mc_circle.0;
mc_circle.0;
container2.addChild(mc_circle); 
Oxigan ist offline   Mit Zitat antworten
Alt 19-05-2011, 10:01   #4 (permalink)
Neuer User
 
Registriert seit: May 2011
Beiträge: 14
wo liegt der container auf der Bühne

Zitat:
Zitat von hgseib Beitrag anzeigen
nur am rande erwähnt:
die bühne selbst ist ein movieclip. und kann grundsätzlich wie ein mc behandelt werden
root.rotation=15; // ist selbstverständlich möglich. sinngemass kann man auch x,y,scale ... ändern


jedes movieclip hat ein eigenes koordinatensystem
standardmässig steht der koordinatenursprung von der bühne links oben, rotation ist null und skalierung ist 100%
negative werte sind ganz normal, das steht dann weiter links oben

angenommen du setzt 'A' auf die bühne
und in 'A' drinn gibt es 'B' bei position x=50, y=100
das gilt dann für B vollkommen egal wo sich A befindet.

wenn du A bewegst und drehst und skalierst, dann bewegen sich B mit, weil sich für B NICHTS geändert hat. B 'denkt' immer noch, es würde bei x=50, y=100 stehen, hätte keine drehung und keine skalierung (und hat das auch innerhalb von A)

angenommen du willst jetzt wissen wo B auf der bühne steht, dann musst du rechnen:
position von A + position von B (in A) geteilt durch die skalierung von A und dann noch die rotation von A mit berücksichtigen ... und bei mehrfacher schachtelung sinngemäss ..
oder einfach:
// diese lokale koordinate von B
var p = {x:0, y:0}
// befindet sich global bei
var p = B.localToGlobal(p);
Danke für diese Erklärung. Habe es auch verstanden bis auf den container (A). A liegt auf der Bühne (0/0 links oben). Also müssten doch wenigstens die container x/y positive Werte zurückgeben. Oder anderst gesagt - ich will wissen wo A auf der Bühne liegt.
Kann es sein, daß es einen Unterschied macht, wenn ein container dynamisch erzeugt wird, aber der movieclip, der dynamisch in den container gepackt werden soll, schon auf der Bühne liegt?
Ich habe dies nämlich alles schon einmal gemacht - von Hand und da hat der container ganz normale positive Bühnenkoordinaten.

riester

Für Leidensgenossen habe ich dieses anschauliche Tutorial gefunden.
How to use the coordinate system in Flash and move objects with ActionScript | Flash Explained
riester ist offline   Mit Zitat antworten
Alt 19-05-2011, 10:37   #5 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
Zitat:
Zitat von riester Beitrag anzeigen
.. ich will wissen wo A auf der Bühne liegt ..[/url]
immer da, wo du es hinlegst
Code:
import flash.display.Sprite;
import flash.geom.Point;

var A:Sprite = new Sprite();
addChild(A);
// am anfang steht's immer auf 0/0
trace("a)",A.x,A.y);
A.x=100, A.y=50;
// A wurde verschoben
trace("b)",A.x,A.y);

var B:Sprite = new Sprite();
A.addChild(B);
// für B ist A gewissermassen seine Bühne
// am anfang steht's immer auf 0/0
trace("c)",B.x,B.y);
var p:Point = new Point();
p = B.localToGlobal(p);
// von der richtigen bühne aus gesehen natürlich nicht
trace("d)",p.x,p.y);

B.x=11, B.y=5;
p = new Point();
p = B.localToGlobal(p);
trace("e)",p.x,p.y);

/*
a) 0 0
b) 100 50
c) 0 0
d) 100 50
e) 111 55
*/
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 23-05-2011, 14:38   #6 (permalink)
Neuer User
 
Registriert seit: May 2011
Beiträge: 14
Hallo hgSeib,

vielen Dank für die Hilfe, ich habe es verstanden.

riester
riester ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Dynamisch MovieClips hinzufügen NeoInferno ActionScript 2 7 29-01-2007 20:27
movieclips dynamisch skalieren pegasus75 ActionScript 1 9 04-03-2006 12:06
Movieclips dynamisch erstellen bassball ActionScript 1 1 13-01-2006 00:02
movieclips dynamisch ansteuern benedict171217 Flash MX 2004 2 21-08-2005 13:02
Dynamisch erstellte MovieClips TWfromSWD Flash 4 und Flash 5 4 12-01-2004 17:37


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:52 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele