Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-06-2004, 15:12   #1 (permalink)
Neuer User
 
Benutzerbild von argv
 
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...
argv ist offline   Mit Zitat antworten
Alt 10-06-2004, 15:56   #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()
tibi:: ist offline   Mit Zitat antworten
Alt 10-06-2004, 16:26   #3 (permalink)
Neuer User
 
Benutzerbild von argv
 
Registriert seit: Apr 2004
Beiträge: 191
danke erstmal für den tip

könnte ich also dann folgendes schreiben:

// mc ist ne vari die den namen enthält
var position:eval(mc) = {x: _x, y: _y};
trace(position.y);

argv ist offline   Mit Zitat antworten
Alt 10-06-2004, 16:42   #4 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Ort: Berlin
Beiträge: 18
HALT!

Code:
var position:Object = {x: _y, y: _y};
ist dasselbe wie:

Code:
position = new Object();
position.x = _x;
position.y = _y;
var deklariert offiziell eine neue Variable, braucht man hier nicht.
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!";
Jetzt lies meinen Post bitte nochmal genau mit diesen Infos....hihi

Geändert von tibi:: (10-06-2004 um 16:47 Uhr)
tibi:: ist offline   Mit Zitat antworten
Alt 10-06-2004, 17:44   #5 (permalink)
Neuer User
 
Benutzerbild von argv
 
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.
argv ist offline   Mit Zitat antworten
Alt 10-06-2004, 18:06   #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:
Angehängte Dateien
Dateityp: zip localToGlobal.fla.zip (6,5 KB, 9x aufgerufen)

Geändert von tibi:: (10-06-2004 um 19:09 Uhr)
tibi:: ist offline   Mit Zitat antworten
Alt 10-06-2004, 18:55   #7 (permalink)
Neuer User
 
Benutzerbild von argv
 
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....
argv ist offline   Mit Zitat antworten
Alt 10-06-2004, 18:59   #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
Deluxe ist offline   Mit Zitat antworten
Alt 10-06-2004, 19:12   #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.
tibi:: 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



Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele