Movie in Movie Problem

daKleene

Grünschnabel
Hallo ihr Lieben,

ich habe folgendes Problem: (Siehe auch Anhang)

Auf der Bühne befinden sich 2 Movieclips.
In dem einen befindet sich ein weiterer Clip, der im Endeffekt als hittest dient.
Der andere Clip auf der Bühne soll der Bewegung des Hittestclips folgen.
Macht er auch, aber sobald ich den ersten Clip bewegen will, folgt der 2. nicht mehr
der Bewegung des Hittestclips.

Geht das bei verschachtelten Clips nicht?

Hier das AS:

1.Clip

onClipEvent (mouseDown) {
if (hitTest(_root._xmouse, _root._ymouse, true)) {
dragging = true;
startDrag(this, false);
updateAfterEvent();
}
}
onClipEvent (mouseUp) {
dragging = false;
stopDrag();
}


2.Clip

onClipEvent (enterFrame) {
this._x = _root.typ.Intervall._x+362.9;
this._y = _root.typ.Intervall._y+134.1;
}


Ich bin ziemlich am Verzweifeln, das muss doch gehen. Woran denke ich nicht?

Liebe Grüsse, und Danke schon mal.

daKleene
 

Anhänge

  • Test.fla
    52,5 KB · Aufrufe: 19
Zuletzt bearbeitet:
Hallo und herzlich Willkommen auf tutorials.de, daKleene!

Uiuiui. Der Aufbau ist ganzschön oldschool. Was soll das z.B. mit dem Intervall-MC, der nur alle paar Bilder da ist?

Außerdem musste ich erstmal suchen, bis ich den Code gefunden hab. Also:
1. Code in ein Schlüsselbild schreiben. Mit irgendwelchen verschachtelten Codes versteckt irgendwo in MCs und auf MCs und auf MCs in MCs kommst du auf Dauer nicht weit. Nicht ohne Grund ist man mit AS3 gezwungen, Code auf Schlüsselbilder zu schreiben. Und das am Besten nur auf der Hauptzeitleiste.

2. onClipEvent() war schon vor 6 Jahren veraltet. Benutze lieber die MovieClip-Methoden meinMovieclip.onPress oder onRelease oder onEnterFrame. Bei einem onClipEvent(mouseDown) mit nem hitTest der Maus drinne dreht sich einem heutzutage der Magen um..

3. Was das mit dem Intervall-MC soll versteh ich immernoch nicht. Wie soll der Code denn funktionieren, wenn in 90% der Ausführungen garkein Instanz-MC existiert, von dessen Koordinaten aus doch die neue Position berechnet werden soll?

Probier's mal mit dem folgenden Code auf einem Schlüsselbild, am Besten einem leeren in einer extra "code"-Ebene!. Sonst gibt es keinen Code.

Code:
_root.typ.onPress = function() {
	this.startDrag();
}
_root.typ.onRelease = function() {
	this.stopDrag();
}
_root.onEnterFrame = function() {
	hm2._x = _root.typ._x+362.9;
	hm2._y = _root.typ._y+134.1;
}

Wieso genau der andere MC nun auf dieser Position sein muss - keine Ahnung. Meinen Geschmack trifft ja eher ein dynamischeres Verfolgen, kommt wohl auf das Projekt drauf an:

Code:
_root.typ.onPress = function() {
	this.startDrag();
}
_root.typ.onRelease = function() {
	this.stopDrag();
}
_root.onEnterFrame = function() {
	hm2._x += (typ._x - hm2._x) / 9;
	hm2._y += (typ._y - hm2._y) / 9;
}

(Hier verwende ich einen Vektor von den aktuellen zu den Zielkoordinaten und teile ihn durch 9, sodass immer nur ein Teil des Wegs gegangen wird)
 
Hallo Jens,

vielen Dank für Deine schnelle Antwort. Und VIELEN DANK für die nette Begrüßung :) Hat mich wirklich gefreut. Auch, das ich mit dem oldschool :D lol


Das Probem ist, dass es wichtig ist, dass Movieclip "hm2" NUR an den Stellen auftaucht, wo "Intervall" gerade ist.

Movieclip "Intervall" ist eigentlich der Hitpunkt für eine Spielfigur, die ich hier durch den blauen Ball darstelle. Nun ist es aber sehr wichtig, dass Movieclip "hm2" genau an den Stellen auftaucht, wo Movieclip "Intervall" sich gerade befindet, was zu Beginn ja auch klappt. Nur beim dragen nicht mehr. Dass "hm2" "typ" folgt, geht ja ohne Probleme. Aber er muss "Intervall" folgen.

Dass "Intervall" immer nur so kurz erscheint ist daher so wichtig, weil der kurze hittest einen Wasserplatscheffekt steuert, aber, das ist jetzt recht kompliziert und lang zu erklären.

Ich möche einfach gesagt, dass, sagen wir mal, z.B. die Hand einer Spielfigur etwas trägt. Die Figur hat zu diesem Zweck einen Clip Namens "BallHit" an verschiedenen Positionen einer Animation an der Stelle, wo die Hand gerade ist. Wenn nun die Figur bewegt wird, durch drag oder wie auch immer, soll der dem Clip "BallHit" angefügte Gegenstad, dargestellt z.B. durch Moveclip "Ball" , folgen.

Das war jetzt nur ein Beispiel, weches den Grundgedanken aber ganz gut ausdrückt.

LG

daKleene
 
Zuletzt bearbeitet:
Versteh ich immernoch nicht so ganz. Für die tragende Hand würde ich dann einfach die Koordinaten etwas verschieben, also hm2._x = typ._x + 35 oder so.

Wenn der Interval-MC weg ist, man aber tortzdem auf ihn zugreifen möchte, kommt es zu einem Fehler. Dann wird der Code nicht mehr ausgeführt. Schau dir vielleicht mal die setInterval()-Funktion an?
 

Neue Beiträge

Zurück