Objekt mit Maus verschieben, zwei Fragen

Hi,

poste bitte mal Deine .fla mit einer Beschreibung, was sich von wo bis wo verschieben lassen soll. Ich kann doch nicht wissen, worauf sich in Deinem Code "this" und "mauer2" beziehen und auf welchen Zeitleisten mit welcher Positionierung diese Objekte sitzen ...

Gruß
.
 
Guten Morgen,
Bitte schön. Entschuldige bitte, du hast das ja eigentlich extra vorher schon mal betont gehabt das ich die FLA posten soll.
Das was vorhin noch "mauer 2" hieß heißt jetzt nur "mauer". Hatte das mit verschiedene Varianten ausprobiert aber alle mit dem selben Ergebnis.

Gruß
 

Anhänge

  • 27017attachment.zip
    5,6 KB · Aufrufe: 31
Hi,

Code:
on (press) {
	this.startDrag(false, this._width / 2, this._y, Stage.width - this._width / 2, this._y);
}

on (release, releaseOutside) {
	this.stopDrag();
}

Erläuterungen:
  • "this" weil Du Dich innerhalb der Ereignisfunktion schon auf der Zeitleiste des MC "mauer" befindest - der MC sitzt allerdings nicht auf seiner eigenen Zeitleiste. ;)
  • Da sich Dein Rechteck zentriert um den Nullpunkt des MC bewegt, musst Du zu der linken Kante die halbe Breite hinzuzählen, und von der rechten Kante die halbe Breite abziehen.
  • Du solltest das releaseOutside-Ereignis auch angeben, da der Vorgang sonst nicht gestoppt wird, wenn jemand die Maus schnell vom Objekt zieht und loslässt

Gruß
.
 
Moinsen,
"this" weil Du Dich innerhalb der Ereignisfunktion schon auf der Zeitleiste des MC "mauer" befindest - der MC sitzt allerdings nicht auf seiner eigenen Zeitleiste.
Ähm das mit der eigenen Zeitleiste verstehe ich nicht so ganz. Hab ich auch schon in meinem Buch nicht so ganz verstanden. Ab wann hatt den der MC seien eigene Zeitleiste. Weil wenn ich das MC doppelklicke, also zum bearbeiten dann haben doch alle Objekte (MC´s und Grafiken) eine Zeitleiste mit denen animiert werden kann. Oder muß ich auf der Bühne nochmal eine neue Zeitleise (Ebne) erstellen?
Da sich Dein Rechteck zentriert um den Nullpunkt des MC bewegt, musst Du zu der linken Kante die halbe Breite hinzuzählen, und von der rechten Kante die halbe Breite abziehen.
ist ja eigentlich ogisch :)
Du solltest das releaseOutside-Ereignis auch angeben, da der Vorgang sonst nicht gestoppt wird, wenn jemand die Maus schnell vom Objekt zieht und loslässt
Hab ich ausprobiert gehabt und es passiert doch das gleiche. Ist doch egal bei release wo ich die Maustaste loslasse.

Viele Gruß
 
Hi,

1. Nun - jeder MC (und Grafikobjekte auch, aber von denen will ich nicht reden) hat automatisch seine eigene Zeitleiste. Wenn Du Dich nun innerhalb einer Ereignisfunktion befindest, die sich auf diesen MC bezieht (also z.B. "on(press)" auf der MC-Instanz oder "meinMc.onPress = function() {"), dann "befindest" Du Dich logisch auf der MC-eigenen Zeitleiste, was dazu führt, dass "this" auf den MC verweist und der MC selber über seinen Instanznamen nicht mehr angesprochen werden kann - allerdings dann über "_parent.Instanzname", da sich "_parent" in diesem Moment auf die dem MC übergeordnete Zeitleiste bezieht.

2.
Hab ich ausprobiert gehabt und es passiert doch das gleiche. Ist doch egal bei release wo ich die Maustaste loslasse.
In Deinem Fall mag das so aussehen, aber probier es mal mit einem kleinen MC (10x10 Pixel) aus: Beim Draggen kommt er nicht immer sofort hinterher, und so kann es passieren, dass die Maus ausserhalb des MC losgelassen wird. Und dann feuert eben nicht das onRelease-Ereignis, sondern lediglich das onReleaseOutside-Ereignis.

Gruß
.
 

Neue Beiträge

Zurück