Lückentext per Drag & Drop - wie vermeide ich Überlagerung von Gelöstem?

viskjall

Grünschnabel
Hi Leute, habe hier ein Flashspiel, in dem man einen Lückentext mit 10 Lücken lösen soll mit 10 vorgegebenen Wörtern. Drag & drop funktioniert und wenn man richtig löst, wird counter erhöht. Mein Problem: Wenn man einen Lückentext bereits gelöst hat, das Lösungswort sich also schon in der Lücke befindet, kann man trotzdem noch ein Lösungswort darüberziehen und dann ist es gelockt. Wie kann ich das vermeiden? Unten der Code, is für jeden Fall praktisch dasselbe.

Erhielt die Aufgabe den "Fehler" bis zum WE zu beheben, ist nicht mein Code und ich hatte an ganz anderen Sachen bei dem Projekt gewerkelt, weiß nicht wo ich ansetzen soll, bin über jede Hilfe dankbar!!

Vielen Dank !

P.S.

Lösungen bzw. Erläuterungen bitte möglichst anfänger-gerecht ;)

Code:
stop();

move1 = false;
move2 = false;
move3 = false;
move4 = false;
move5 = false;
move6 = false;
move7 = false;
move8 = false;
move9 = false;
move10 = false;

var counter = 0;

//Fall1
text1.onPress = function() {
	if (!move1)
		text1.startDrag("");
}

text1.onRelease = function() {
	text1.stopDrag();
	if (text1.hitTest("/luecke_1")) {
		text1._x=93;
		text1._y=153;
		move1 = true;
		counter ++;
		punkte.text = "Punkte: " + counter;
	
	} 
		else if (text1.hitTest("/luecke_2")) {
			text1._x=293;
			text1._y=203;
			move1 = true;
	} 
	else if (text1.hitTest("/luecke_3")) {
			text1._x=130;
			text1._y=226;
			move1 = true;
	} 
	else if (text1.hitTest("/luecke_4")) {
			text1._x=139;
			text1._y=251;
			move1 = true;
	} 
	else if (text1.hitTest("/luecke_5")) {
			text1._x=340;
			text1._y=251;
			move1 = true;
	} 
	else if (text1.hitTest("/luecke_6")) {
			text1._x=99;
			text1._y=276;
			move1 = true;
	} 
	else if (text1.hitTest("/luecke_7")) {
			text1._x=62;
			text1._y=323;
			move1 = true;
	} 
	else if (text1.hitTest("/luecke_8")) {
			text1._x=236;
			text1._y=371;
			move1 = true;
	} 
	else if (text1.hitTest("/luecke_9")) {
			text1._x=288;
			text1._y=395;
			move1 = true;
	} 
	else if (text1.hitTest("/luecke_10")) {
			text1._x=183;
			text1._y=443;
			move1 = true;
	} 
		else {
		text1._x=676;
		text1._y=95;
	}
}

//Fall2
text2.onPress = function() {
	if (!move2)
		text2.startDrag("");
}

text2.onRelease = function() {
	text2.stopDrag();
	if (text2.hitTest("/luecke_2")) {
		text2._x=293;
		text2._y=203;
		move2 = true;
		counter ++;
		punkte.text = "Punkte: " + counter;
	} 
		else if (text2.hitTest("/luecke_1")) {
			text2._x=93;
			text2._y=153;
			move2 = true;
	} 
	else if (text2.hitTest("/luecke_3")) {
			text2._x=130;
			text2._y=226;
			move2 = true;
	} 
	else if (text2.hitTest("/luecke_4")) {
			text2._x=139;
			text2._y=251;
			move2 = true;
	} 
	else if (text2.hitTest("/luecke_5")) {
			text2._x=340;
			text2._y=251;
			move2 = true;
	} 
	else if (text2.hitTest("/luecke_6")) {
			text2._x=99;
			text2._y=276;
			move2 = true;
	} 
	else if (text2.hitTest("/luecke_7")) {
			text2._x=62;
			text2._y=323;
			move2 = true;
	} 
	else if (text2.hitTest("/luecke_8")) {
			text2._x=236;
			text2._y=371;
			move2 = true;
	} 
	else if (text2.hitTest("/luecke_9")) {
			text2._x=288;
			text2._y=395;
			move2 = true;
	} 
	else if (text2.hitTest("/luecke_10")) {
			text2._x=183;
			text2._y=443;
			move2 = true;
	} 
		else {
		text2._x=676;
		text2._y=375;
	}
}
//Fall3
text3.onPress = function() {
	if (!move3)
		text3.startDrag("");
}

text3.onRelease = function() {
	text3.stopDrag();
	if (text3.hitTest("/luecke_3")) {
		text3._x=130;
		text3._y=226;
		move3 = true;
		counter ++;
		punkte.text = "Punkte: " + counter;
	}
	else if (text3.hitTest("/luecke_1")) {
			text3._x=93;
			text3._y=153;
			move3 = true;
	} 
		else if (text3.hitTest("/luecke_2")) {
			text3._x=293;
			text3._y=203;
			move3 = true;
	} 
	 
	else if (text3.hitTest("/luecke_4")) {
			text3._x=139;
			text3._y=251;
			move3 = true;
	} 
	else if (text3.hitTest("/luecke_5")) {
			text3._x=340;
			text3._y=251;
			move3 = true;
	} 
	else if (text3.hitTest("/luecke_6")) {
			text3._x=99;
			text3._y=276;
			move3 = true;
	} 
	else if (text3.hitTest("/luecke_7")) {
			text3._x=62;
			text3._y=323;
			move3 = true;
	} 
	else if (text3.hitTest("/luecke_8")) {
			text3._x=236;
			text3._y=371;
			move3 = true;
	} 
	else if (text3.hitTest("/luecke_9")) {
			text3._x=288;
			text3._y=395;
			move3 = true;
	} 
	else if (text3.hitTest("/luecke_10")) {
			text3._x=183;
			text3._y=443;
			move3 = true;
	} 
		else {
		text3._x=676;
		text3._y=295;
	}
}


weida5.onPress = function() {
	gotoAndPlay(1956);
}
 
Mal davon abgesehen, dass das ganze nicht sonderlich gut gelöst ist....

Tipp an den Coder: For Schleife ;) Spart ne menge Code.

Nun zu deinem Problem.
Häng am Anfang an jede Lücke eine Variable: z.B. luecke_1.gotText = false;
(Tipp: Auch das kann man wunderbar mit einer For schleife lösen ;) )
Und denn prüfe jedes mal bevor der Text in die Lücke gesetzt wird, ob luecke.gotText == false ist.

Somit weisst du ob schon ein Text in der Lücke ist. Natürlich musst du die Variable auf true setzen wenn ein Text gesetzt wird.

Hoffe du verstehst was ich meine ...

Nochmal als kleines Codebeispiel, nur mit einem Text und einer Lücke:
PHP:
luecke.gotText = false;
text.onPress = function(){
     this.startDrag();
};
text.onRelease = function(){
     if(this.hitTest(luecke) && luecke.gotText == false){
          this.stopDrag();
     }
};


mfg
 
Zurück