Drag`n Drop

Lehmkuhler

Mitglied
Hallo,

ich wieß nicht mehr weiter.
Guckt euch bitte die Datei im Anhang an um mein Problem zu verstehen.

http://maik.poserin.de/drag-drop.zip

Ich habe dort 3 Rechtecke die man mit hilfe von Drag`n Drop auf das definierte Ziel ziehen kann. Zieht man das Objekt auf das falsche Ziel so begibt es sich auf seine Ausgangsposition zurück. Nun möchte ich, dass wenn alles 3 Rechtecke auf ihrem Ziel liegen, automatisch zum nächsten Bild auf der Hauptzeitleiste gesprungen wird.
Wer kann mir helfen?

mfg Lehmkuhler
 
Zuletzt bearbeitet:
Bei mir kommt leider beim entpacken ein Fehler.
Tobee
 

Anhänge

  • fehler.JPG
    fehler.JPG
    4,1 KB · Aufrufe: 20
Tut mir leid das ich nicht helfen kann.
Entweder ist das Archiv beschädigt oder ich stell mich gerade blöd an.

Tobee
 

Anhänge

  • fehler2.JPG
    fehler2.JPG
    21,3 KB · Aufrufe: 22
Hi,

ich kann da als "nicht-Flasher" leider nicht weiterhelfen, möchte aber auch nur tobee mittteilen, dass der Downlaod bei mir funktioniert und sich im ZIP-Archiv die drag-drop.fla-Datei befindet.
 
Hallo,

bitte beachte, dass bei uns Threadpushing nicht geschätzt wird!!
Instanziere auf der Hauptzeitleiste einen Array:

Code:
var ary = [];
Nun definierst du eine Funktion, die die Länge des Arrays überprüft:
Code:
function checkFields () {
	if (ary.length == 3) gotoAndStop(2);
}

Nun rufst du bei jeder erfolgreichen Platzierung eines Feldes folgendes Skript auf:
Code:
_parent.ary.push(this);
_parent.checkFields();

Ich referenziere deshalb mit _parent, weil du entsprechende Anweisungen in einer onRelease-Funktion laufen hast.

gruss
 
Ich kann dir nicht ganz folgen.
Was hat es mit diesen "ary" auf sich?
und wo ist "checkFields" definiert?
Könntest du mir das nicht an einem Beispiel zeigen, damit ich das besser verstehen kann?
 
Hallo,

das hier ist dein Code mit meinen Ergänzungen:

Code:
stop();
var ary = [];
var amt = 15;
for (var i = 1; i<=amt; i++) {
	var obj = this["dr"+i];
	obj.sx = obj._x;
	obj.sy = obj._y;
	obj.idx = i;
	obj.brother = this["iv"+i];
	obj.brother.swapDepths(i);
	obj.swapDepths(5000+i);
	obj.onPress = function() {
		delete this.onEnterFrame;
		this.startDrag();
	};
	obj.onRelease = obj.onReleaseOutside=function () {
		this.stopDrag();
		if (this._droptarget.substr(this._droptarget.lastIndexOf("/")+1) == this.brother._name) {
			this._x = this.brother._x;
			this._y = this.brother._y;
			this.swapDepths(-8000+this.idx);
			this._parent.ary.push(this);
			this._parent.checkFields();
			delete this.onPress;
                        delete this.onRelease;
		} else {
			this.onEnterFrame = function() {
				this._x += (this.sx-this._x)/5;
				this._y += (this.sy-this._y)/5;
				if (Math.abs(this.sx-this._x)<1 && Math.abs(this.sy-this._y)<1) {
					delete this.onEnterFrame;
				}
			};
		}
	};
}

function checkFields () {
	if (ary.length == 3) gotoAndStop(2);
}

1. ary
...ist ein Array, dem du jeden Drag-MovieClip, dass an seinem Bestimmungsort angekommen ist, hinzufügst. Damit das definitiv nur einmal pro MovieClip passiert, habe ich den onRelease auch gelöscht. Ein Array ist eine Liste von Daten, Objekten, Referenzen, Variablen etc. Alle Elemente in einem Array sind an einen Index gebunden. Hier findest du einen relativ ausführlichen Artikel dazu.

2. checkFields
...ist eine Funktion, die die Länge des Arrays, d.h. die Anzahl Elemente in der Liste, überprüft. Wenn diese Zahl gleich drei ist, springt der Film zum nächsten Schlüsselbild.

gruss
 

Neue Beiträge

Zurück