• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Warten auf "tweenEnde"

J-C

Lounge-Member
und ich habe nochmal eine Frage :D

einfach gesagt: wie kann ich auf das Ergebnis einer Funktion warten?

folgendes Problem: ich lasse Karten ziehen - funktioniert soweit alles - zZt aber alls gleichzeitig, und ich möchte, daß die nacheinander gezogen werden.

ich hatte mir gedacht, da ich das mit 2 tween-funktionen mache, daß ich "tween1.onMotionFinished" bzw "tween2.onMotionFinished" jeweils eine boolsche Variable auf "true" setze - und "außerhalb" in einer while-schleife solange nichts tue, bis diese beiden Variablen halt "true" sind - ergbnis ist - das script bleibt hängen ....


hier mal der auszug:

hier werden die "startkarten" gezogen
Code:
	for(u=0;u<karten_Amount;u++){
		
		
		SW_drawCard("Player_1",u,true);
		SW_drawCard("Player_2",u,false);
	}

mit dieser Funktion
Code:
function SW_drawCard(player,cardPlace,activePlayer)
{
/* hier passiert vorher noch einiges */

		drawCardName = player+"_card_"+cardCounter;
		
		duplicateMovieClip(_root.mc_cardTemplate, drawCardName, this.getNextHighestDepth());
		
		// variablen, ob die Bewegung der Karte abgeschlossen ist
		this[drawCardName].xMotionDone = false;
		this[drawCardName].yMotionDone = false;
		
		this[drawCardName].mc_cardBackground.gotoAndStop(arrCardTypes[arrCardToType[drawnCardID]]["cardType"]);
		
		SW_drawCardFromPile(this[drawCardName],cardPositionX+(cardPlace*cardWidth)+(cardPlace*cardSpace),cardEndPositionY);
		

//////////////////////////////////////////////////////////////////////////////////
		// warten, daß die Karte fertig gezogen wurde - stürzt ab?????

		while(!this[drawCardName].xMotionDone && !this[drawCardName].yMotionDone)
		{
			if(this[drawCardName].xMotionDone && this[drawCardName].yMotionDone) break;   // das hier zusätzlich nochmal probehalber eingebaut - bringt auch nichts
			
		}
		

}


hier ist die Bewegung
Code:
function SW_drawCardFromPile(cardMC,Xpos,Ypos)
{
		cardMC.xMotionDone = false;
		cardMC.yMotionDone = false;
/* hier kommt die ganze Tweendefinition */
....
/**/
        var  XDrawTween = new mx.transitions.Tween(mc, "_x", easeType, beginX, endX, time, true);
        var  YDrawTween = new mx.transitions.Tween(mc, "_y", easeType, beginY, endY, time, true);
		
		XDrawTween.onMotionFinished = function() { cardMC.xMotionDone = true;} // funktioniert eigentlich - wenn ich mir hier was ausgebn lasse, dann tut er das genau dann, wenn der Tween abgeschlossen ist
		YDrawTween.onMotionFinished = function() { cardMC.yMotionDone = true;}
}
 
Zuletzt bearbeitet:
*tilt*

ich weiß woran's liegt -.-
statt der FOR-Schleife werd ich's mal mit Interval versuchen ^^ dann klappt's auch ... dann fällt auch das Warten flach
 
Einfacher wäre es sicher mit einer callback Funktion zu arbeiten, die beim auftreten des events aufgerufen wird. Es ist aber aus deinem Code nicht ersichtlich, was du aufrufen willst.
 
Zurück
Oben