MovieClip immer Bewegung

flashsi

Erfahrenes Mitglied
Hallo Leute,

kann mir jemand verraten, wie ich einen MovieClipp immer in Bewegung halte.
Er soll einfach auf der x-Achse langsam hin- und her wandern.
Mache ich das mit der Tween Klasse?
Hab schon rumbrobiert, aber er läuft nur immer von der einen auf die andere Seite, und dann mit onMotionFinished wieder zurück. Das wars. Wie krieg ich das hin, das es kontinuierlich bleibt?

Grüsse
 
Das mit der Tween Klasse müsstest du so machen, das du da immer eine Funktion aufruft die eben einmal hin und einmal zurück das macht.
Praktisch gesehen:

  • tweenRight();
  • tweenLeft();

In beiden wird im onMotionFinished-Event die andere Funktion aufgerufen.

Oder du realisierst es einfach mit einem Tween auf der Zeitleiste, das wiederholt sich ja dauernd wenn du es nicht stoppst
 
Vielen Dank für den Tipp! Funktioniert alles.
Wie würdest Du denn eine Funktion beenden? Also, bei dieser, die sich endlos immer wieder aufruft. Gibts sowas wie my_function_function.stop oder end?
 
mhh du kannst die Funktion zwar mit break beenden aber das ist nicht so einfach ... Ich würde einfach eine if abfrage reinsetzten in der getestet wird ob ein Wert true oder false ist. Wenn das der Fall ist wird die andere Funktion aufgerufen oder halt es geschiet nichts und der MC bewegt sich nicht mehr.
Den Wert kannst du dann zB in einer anderen Funktion auf true oder false setzen
 
Danke mal wieder!
Ich habe da noch eine allgemeinere Frage. Was das manövrieren in levels angeht.

Folgendes funktioniert nur so:

Code:
import mx.transitions.Tween;


	this.attachMovie("t1","t11",100);
	t11._x = 580;
	t11._y = 400;

tw1fadein();
	
function tw1fadein() {
	var t1fi:Tween = new Tween(t11, "_alpha", Strong.easeIn, 0, 100, 3, true);
	t1fi.onMotionFinished = function() {
		tw1fadeout();
	};
}
function tw1fadeout() {
	var t1fi:Tween = new Tween(t11, "_alpha", Strong.easeOut, 100, 0, 3, true);
	t1fi.onMotionFinished = function() {
		
		removeMovieClip(t11);
		x1 = Math.floor(Math.random()*(580-250+1))+250;
		y1 = Math.floor(Math.random()*(405-395+1))+395;

		_root.attachMovie("t1","t11",100);

		t11._x = x1;
		t11._y = y1;
		tw1fadein();
	};
}

also, mit _root.attach... im unteren Teil. Warum kann ich das nicht mit this lösen? Das wäre viel einfacher, wenn ich dieses in meiner Hauptzeitleist einbinden will.
 
Nun das klingt für dich denke ich mal nun ein bisschen Abstrakt da es in die OOP Programmierenung geht.

Code:
var t1fi:Tween = new Tween(t11, "_alpha", Strong.easeOut, 100, 0, 3, true);

Dies erstellt ein neues Objekt. Wenn du nun bei einem Event in dem Fall onMotionFinished this ausgibst findest du [object] in der Console wieder.

Hier mal ein einfach Lösungsvorschlag

Code:
import mx.transitions.Tween;

        var mc = this;
	mc.attachMovie("t1","t11",100);
	t11._x = 580;
	t11._y = 400;

tw1fadein();
	
function tw1fadein() {
	var t1fi:Tween = new Tween(t11, "_alpha", Strong.easeIn, 0, 100, 3, true);
	t1fi.onMotionFinished = function() {
		tw1fadeout();
	};
}
function tw1fadeout() {
	var t1fi:Tween = new Tween(t11, "_alpha", Strong.easeOut, 100, 0, 3, true);
	t1fi.onMotionFinished = function() {
		
		removeMovieClip(t11);
		x1 = Math.floor(Math.random()*(580-250+1))+250;
		y1 = Math.floor(Math.random()*(405-395+1))+395;

		mc.attachMovie("t1","t11",100);

		t11._x = x1;
		t11._y = y1;
		tw1fadein();
	};
}

Somit wurde in mc einfach der Link zu dem MC gespeichert.
 
Ok. Das leuchtet mir ein. Was aber viel nervender ist, gerade, und ich habe jetzt viele Foren durchsucht:
Wenn ich die schrifttest.swf in mein Hauptprojekt einbinde, funktioniert es am Anfang, wenn ich es jedoch lösche und neu einlade, fängt es total zu spinnen an. Ich müsste die Tweens irgendwie resetten können. tween.null oder tween.stop funktioniert alles nicht.
Hast Du eine Idee?

Hier der Code von meinem Testhauptfilm:

Code:
this.createEmptyMovieClip("pf1", this.getNextHighestDepth());
pf1.loadMovie("schrifttest.swf");



taste.onPress = function() {
	pf1.unloadMovie("schrifttest");
	
	
	pf1.loadMovie("schrifttest.swf");
}

Ist doch eigentlich ganz simpel, aber irgendwie müsste ich was "reinigen" vorher, hab ich das Gefühl.
 
loadMovie benötigt ja etwas an Zeit um die swf zu laden. Könnte mir vorstellen das wenn man da zu schnell klickt das das Problem sein könnte.
 
Ich komm nicht weiter. Vielleicht kannst Du mir noch helfen. Ich kapiers nicht.
Nun habe ich alles in den hauptfilm eingebaut, also ohne loadMovie usw. und es klappt nicht.
Wie kann ich das hinkriegen? Ich könnte Dir eine einfache Version posten. Mal zum angucken, denn ich verstehs nicht mehr.
 
Nun ich kapiere noch nicht wirklich wieso du erst den MovieClip löscht und direkt danach wieder reinlädst.
 

Neue Beiträge

Zurück