Zurück   Flashforum > Flash > ActionScript > ActionScript 2

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-01-2009, 15:46   #1 (permalink)
Padawan
 
Benutzerbild von Seebold
 
Registriert seit: Dec 2005
Ort: Hannover
Beiträge: 75
Question _y von einen MC auf anderen MC übertragen (localToGlobal -Y GlobalToLocal)

Liebe liebe Leute. Ich verzweifle an Flash. Jedes Lösungskonzept das ich mir ausdenke scheitert :-(

Ich sitze an einem Jump'nRun-Spiel; sicher nicht das erste, das in Flash programmiert wurde.

Der Held verhält sich so, dass er so lange fällt, wie er auf keinen Boden aufkommt. Trifft das Sensorenfeld an des Heldens Füßen auf ein Bodensegment, soll dieses die eigenen x/y-Koordinaten in die Eigenschaft Held._bodenhaftung (Punkt-Objekt) schreiben. Ist diese Eigenschaft nicht "undefined", soll der Held landen und sich am y-Wert ausrichten. Dazu muss der Regpunkt (x/y) des Bodens, der sich oben links befindet, in globale Koordinaten umgewandelt werden (localToGlobal()) und der Held muss dann aus den globalen Koordinaten wie lokale machen (globalToLocal()). Soweit dieTheorie. Nun zur Praxis:
Die MC-Verschachtelung im Film ist wie folgt:

Code:
_root
  |
  |
maske -----------------------------------
  |                                     |
  |                                     |
held                            landschaft-----------------------------
  |                                |                |                 |
  |                                |                |                 |
sendor_unten                  inst.boden        inst.boden           usw.

Die Böden haben alle die selbe Klasse (mc_boden.as). Dort steht folgendes:
Code:
class mc_boden extends MovieClip {
function onEnterFrame() {
     if (this.hitTest(this._parent._parent._parent.held.sensor_unten)) {
         var point = {x:0, y:0};
         this._parent._parent._parent.held.localToGlobal(point);
         point = this._parent._parent._parent.held.calcCoords(point);
         this._parent._parent._parent.held._bodenhaftung = point;
     }
}
Der Held hat unter anderem folgende Funtionen:

Code:
this.calcCoords = function(punkt) {
//rechnet globale und lokale Koordinate um
	this.globalToLocal(punkt);
	return punkt;
}

this.landung = function(punkt) {
		this._y = punkt.y
		this.gotoAndStop("steht");
	};
So die Praxis. Nun nun kommt, was im Vergleich Theorie und Praxis oft geschieht (besonders bei Flash ;-): Es funzt net. Der Held zappelt wild rum, oder die Koordinaten bleiben beharrlich bei {x:0, y:0}
Hat jemand ein Idee? Ich verstehe die Funktion von localToGlobal/globalToLokal, verstehe aber nicht die Anwendung...
Seebold ist offline   Mit Zitat antworten
Alt 27-01-2009, 16:24   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
var p={x:0, y:0};
// dieser punkt im objekt ccc
// entspricht einem punkt direkt auf der bühne
_root.aaa.bbb.ccc.localToGlobal(p);

// vorrausgesetzt keine drehung oder skalierung:
trace(p.x);
trace(_root.aaa._x + _root.aaa.bbb._x + _root.aaa.bbb.ccc._x);

// dieser globale punkt entspricht einem punkt in mc ccc
// (der nullpunkt ist der punkt, an dem das mc steht)
_root.aaa.bbb.globalToLoacal(p);
_root.aaa.bbb.ccc._x = p.x;
_root.aaa.bbb.ccc._y = p.y;


_root.aaa.bbb.ccc.globalToLoacal(p);
// davon z.b. hättest du in diesem beispiel nichts, das ergibt null
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (27-01-2009 um 16:30 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 28-01-2009, 14:03   #3 (permalink)
Padawan
 
Benutzerbild von Seebold
 
Registriert seit: Dec 2005
Ort: Hannover
Beiträge: 75
Soso. Das hilft ja tatsächlich weiter

Man muss also nicht den MC die Umrechnung machen lassen, den man platzieren will, sondern sein _parent. Ja. Macht ja auch eigentlich Sinn, da die Koordinaten ja die Verortung im _parent beschreiben.

Ich danke Dir für die schnelle Antwort. Damit komme ich weiter :-)
Seebold ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
globaltolocal, hittest, localtoglobal, spiel, verschachtelung

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 12:23 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele