| |||||||
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) |
| Padawan Registriert seit: Dec 2005 Ort: Hannover
Beiträge: 75
|
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;
}
} 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");
}; Hat jemand ein Idee? Ich verstehe die Funktion von localToGlobal/globalToLokal, verstehe aber nicht die Anwendung... |
| | |
| | #2 (permalink) |
| Techniker 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) |
| | |
| | #3 (permalink) |
| Padawan 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 :-) |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| globaltolocal, hittest, localtoglobal, spiel, verschachtelung |
| Themen-Optionen | |
| Ansicht | |
| |