loadMovie flickering

DerWalter

Mitglied
Hallo liebe Tutorials.de-Gemeinde,

ich habe ein sehr dringendes Problem, die Zeit die Gründe zu erläutern nehme ich mir nicht.

Folgende Situation:

Eine Uhr, wenn man am Zeiger dreht, werden der Uhrzeit entsprechend, Bilder angezeigt.
Die Bilder liegen extern im jpg Format vor. Geladen werden sie mit der Funktion loadMovie immer in das selbe MovieClip,
ausgelöst durch das onMouseMove Event und einer Abfrage der Koordinaten. Alles funktioniert wie es soll,
nur soll ich das flickern entfernen. Nur stehe ich dabei an.

Zur Orientierung der zugehörige Codeausschnitt:

Code:
handle.grip.onPress = function() {
		// when you press the grip in the handle
		handle.onMouseMove = function() {
			// add a mouse move event to the handle
			// get an angle to the mouse using atan2 (gets radians)
			var angle = Math.atan2(this._parent._ymouse-this._y, this._parent._xmouse-this._x);
			// apply rotation to handle by converting angle into degrees
			this._rotation = angle*180/Math.PI;
			// rotate the grip opposite the handle so it won't rotate along with it
			this.grip._rotation = -this._rotation;
			var gerade = Math.round(this.grip._rotation);
			var uhrzeit:Number = (time == "Nacht") ? -1 : 11;
			for (i=0; i<=22; i++) {
				uhrzeit = ++uhrzeit;
				var timeStart = timeTable[i], timeStop = timeTable[++i];
				if ((gerade<=timeStart) && (gerade>=timeStop)) {
					loadMovie(kirche+"_"+place+"_"+uhrzeit+".jpg", walter);
}
}
}



Ich hoffe jemand kann mir noch weiterhelfen, da es echt dringend ist!




Herzliche Grüße,
Walter
 
Für alle Menschen, welche ein ähnliches Problem quält, hier meine Lösung des Problems:

Code:
////////////////////////////////////////////// - Funktion zum austauschen der Bilder in der Mitte
function changePic(pic) {////////////////////////////////////////////// - es liegen zwei Movieclips genau übereinandern, in welche die jeweiligen Bilder geladen werden. Um ein flickern zu verhindern wird das alte Bild erst nach erfolgreichem Laden des neuen Bildes ausgeblendet.
	if (!loadingActive) {////////////////////////////////////////////// - tausche das Bild nur dann wenn gerade kein Anderes geladen wird
		if (aktGo) {////////////////////////////////////////////// - wechsle auf den inaktiven Movieclip
			aktGo = 0;
		} else {
			aktGo = 1;
		}
		image_mcl.addListener(mclListener);
		image_mcl.loadClip(pic,_root["rahmen"+aktGo]);////////////////////////////////////////////// - laden des übergebenen Bildes (pic) in den inaktiven Movieclip
		mclListener.onLoadInit = function(target_mc:MovieClip) {
			_root["rahmen"+aktGo]._visible = true;////////////////////////////////////////////// - nach erfolgreichem Laden wird der Movieclip mit dem neuen Bild sichtbar gemacht
			if (aktGo) {
				aktGo = 0;
			} else {
				aktGo = 1;
			}
			_root["rahmen"+aktGo]._visible = false;////////////////////////////////////////////// - der inaktive Movieclip wird ausgeblendet
			if (aktGo) {
				aktGo = 0;
			} else {
				aktGo = 1;
			}
			loadingActive = 0;////////////////////////////////////////////// - Bildaustausch abgeschlossen
		};
		mclListener.onLoadError = function(target_mc:MovieClip) {
			loadingActive = 0;
		};
	}
}

Aufgerufen wird die Funktion zB. so:

Code:
changePic("irgendein.jpg");
loadingActive = 1;////////////////////////////////////////////// - Das Setzten dieser Variable dient dazu dass nur ein Bild auf einmal ausgetauscht wird - ohne diese Überprüfung wird die Funktion manchmal zu schnell hintereinander aufgerufen, zb bei onMouseMove, dann würden die Bilder aus dem Speicher gelöscht  werden, bevor die neuen Bilder geladen sind, was ein hässliches Flimmern erzeugt.

Nicht sauber, aber da ich unter EXTREMEN Zeitdruck gearbeitet habe, bin ich doch sehr froh es ohne Hilfe bis dahin geschafft zu haben :D



Grüße an die Turorials.de-Nutzer!
-Walter
 
Zuletzt bearbeitet von einem Moderator:
Zurück