| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Apr 2004
Beiträge: 191
| MC-Positionsabfrage Frage!!!!
hallo, habe nen MC der noch selber geschachtelt ist, z.b. soll er _level0.front_mc.p_i_mc.container2_mc heissen. so wenn ich jetzt die _y-Position abfrage gibt er mit nen wert von 0 zurück, wahrscheinlich weil der container2_mc selbst an dieser position liegt, jetzt liegt der Mc aba auf der Bühne an irgendeiner stelle, wo die y_position nicht 0 sein kann, aba bei der abfrage nach der position immer wieder 0 ergibt, ich will aba postion wissen die dieser im root hat und nicht selber seine direkt. gibt es da irgend ne möglichkeit das abzufragen? danke... |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Jul 2003 Ort: Berlin
Beiträge: 18
| MovieClip.localToGlobal()
Das hört sich nach einem Fall für die oft vernachlässigte localToGlobal-Methode an. die _x- und _y-Eigenschaften eines MovieClips beziehen sich immer auf das Koordinatensystem des _parent-MCs. Will man wissen, welchen Koordinaten das Ganze auf dem _root-MC entspricht, geht das am Einfachsten so: Es befindet sich aussen_mc auf der _root-Zeitleiste. aussen_mc hat auf seiner Zeitleiste einen 2.MC, innen_mc mit folgendem Code: Code: //erzeuge ein Objekt, dass die aktuellen Koordinaten speichert
var position:Object = {x: _x, y: _y};
//konvertiere die Koordinaten
this.localToGlobal(position);
//lese Ergebnis aus
trace ("Die Koordinaten entsprechen: _x = " + position.x +", _y = " + position.y); Das Ganze funktioniert auch umgekehrt mit MovieClip.globalToLocal() |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Jul 2003 Ort: Berlin
Beiträge: 18
|
HALT! Code: var position:Object = {x: _y, y: _y}; Code: position = new Object(); position.x = _x; position.y = _y; Der Doppelpunkt nach position und Object dahinter sagt dem Compiler ab MX2004, dass die Variable nur Objekte vom Typ "Object" aufnehmen soll. Objekte kann man in Kurzschreibweise mit geschweiften Klammern anlegen, wie Arrays mit eckigen: Code: meinArray = [];
//ist dasselbe wie
meinArray = new Array();
meinObjekt = {};
//ist dasselbe wie
meinObjekt = new Object();
meinObjekt2 = {prop1: "Hallo", prop2: "Welt!"};
//ist dasselbe wie
meinObjekt2 = new Object();
meinObjekt2.prop1 = "Hallo";
meinObjekt2.prop2 = "Welt!"; Geändert von tibi:: (10-06-2004 um 16:47 Uhr) |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Apr 2004
Beiträge: 191
|
...das ist mir schon alles klar, mit den objekten und so... doch es klappt trotzdem nicht hier mal mein code: //man befinde sich in root: point = new Object(); point.y=eval(mc)._y; eval(mc).localToGlobal(point); trace(point.y); raus kommt wieder 0, aba nicht die position wo sich der mc von root aus befindet. |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Jul 2003 Ort: Berlin
Beiträge: 18
|
was meinst Du denn immer mit eval(mc)? eval() wird eigentlich so gut wie gar nicht mehr gebraucht und verwendet seit Flash5. Also mal ohne eval() zum besseren Verständnis: Code: //auf _root
mc = aussen_mc.innen_mc;
pos = {x: mc._x, y: mc._y};
aussen_mc.localToGlobal(pos);
trace("y-Koordinate entspricht " + pos.y);
trace("x-Koordinate entspricht " + pos.x); Hier der Beweis als .fla: Geändert von tibi:: (10-06-2004 um 19:09 Uhr) |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Apr 2004
Beiträge: 191
|
hallo nochmal, also deine fla geh wunderbar nur wenn i es bei mir ausprobiere dann gehts nicht, also ich mach das ja so. ich hab ne function dell = function(dellmc,mc){ trace(mc); pos = {x: mc._x, y: mc._y}; mc.localToGlobal(pos); trace("y-Koordinate entspricht " + pos.y); trace("x-Koordinate entspricht " + pos.x); } so, der 2. parameter ist ne vari die den namen enthält, vom root bis zum inneren Mc. die funktion rufe ich in dem inneren MC auf wenn ich mit der maus auf ihn klick, dann ruft er die funktion auf. so dann lass i es wie du ausTracen und sehe als ausgabe nur den string im trace aba für pos.x und pos.y steht nichts, nur leerzeichen oder so. also die ausgabe ist: y-Koordinate entspricht x-Koordinate entspricht ...ohne welche werte.... |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Jun 2001 Ort: Stuttgart
Beiträge: 6.415
|
mit eval tut man doch noch gerne evaulieren is nich wirklich veraltet und was zur logik im koordinatenobjekt sicherst du die koordinaten von deinem mc, die methode localToGlobal wird jedoch bei dem mc aufgerufen, der den gewünschten mc enthält also so //auf _root mc = aussen_mc.innen_mc; pos = {x: mc._x, y: mc._y}; mc._parent.localToGlobal(pos); trace("y-Koordinate entspricht " + pos.y); trace("x-Koordinate entspricht " + pos.x); deluxe |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Jul 2003 Ort: Berlin
Beiträge: 18
|
@ deluxe Da haste natürlich recht, mit dem falschen Pfad. Habe das oben korrigiert. (auch in der angehängten fla). eval() und so ist natürlich Geschmacksache, ich finde es eben ziemlich unübersichtlich und brauchen tut man es nur noch in sehr seltenen Fällen. Ich kenne auch die Argumente gegen die dot-Schreibweise...eigenes Thema. |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |