removeMovieClip(s)

harrry

Erfahrenes Mitglied
Hallo,

es gibt da diese wunderbare Bildergalerie, die Bilder vom Server lädt.

Da ich mehrere Sets von Bildern nacheinander anbieten möchte, habe ich mehrere Schlüsselbilder mit diesem Skript und den jeweiligen Pfadangaben und springe mit Hilfe einer Navigation von Bild zu Bild. Bei jedem neu geladenen Bilder-Set verschwindet das vorhergehende - was ja auch so sein soll.

Mein Problem: das zuvor angezeigte Bilder-Set verschwindet NUR dann, wenn die Bilder durch das Skript noch nicht aktiviert bzw. skaliert wurden. Diejenigen Bilder, die man angeklickt hat, bleiben leider angezeigt und das nächste Set kommt dazu.

Meine Frage: wie kann ich das vorhergehende Bilder-Set bei der Anwahl des nächsten restlos entfernen? Habe mit RemoveMovieClip rumgespielt, leider ohne Resultat.

Bitte herzlich um den entscheidenden Tipp!

Hier das Skript:
PHP:
MovieClip.prototype.lade_jpg = function(jpg, ziel, farbe) {
  	_global.niveauClip++;
  	var mc = this.createEmptyMovieClip("lader" + _global.niveauClip, 100 + _global.niveauClip);
  	ziel.loadMovie(jpg);
  	mc.onEnterFrame = function() {
 		this.prozent = Math.floor((ziel.getBytesLoaded() / ziel.getBytesTotal()) * 100);
  		this.prozent9 = .9 * this.prozent;
  		ziel._parent._xscale = 100 - this.prozent / 3;
  		ziel._parent._yscale = 100 - this.prozent / 3;
  		if (!isNan(this.prozent) && ziel.getBytesTotal() > 50) {
  			this.clear();
  			with (this) {
  				beginFill(farbe, 80);
  				lineStyle(0, 0x999999, 100);
  				moveTo(ziel._x, ziel._y);
 				lineTo(ziel._x + prozent, ziel._y);
 				lineTo(ziel._x + prozent, ziel._y + prozent9);
 				lineTo(ziel._x, ziel._y + prozent9);
  				lineTo(ziel._x, ziel._y);
  				endFill();
  			}
  		}
  		if (this.prozent == 100 && ziel.getBytesTotal() > 50) {
  			mc.removeMovieClip();
  			delete this.onEnterFrame;
  			ziel._width = 100;
  			ziel._height = 90;
  			//ziel._parent.swapDepths(_root.niveau++);
  			with (ziel._parent) {
  				_xs = 70;
  				_ys = 70;
  				_xscale = 70;
  				_yscale = 70;
  				_alpha = 100;
  				//--------------------
  				moveTo(50, -45);
  				lineStyle(1, 0);
  				lineTo(-50, -45);
  				lineTo(-50, 45);
  				lineStyle(1, 0x999999);
  				lineTo(50, 45);
  				lineTo(50, -45);
  			}
  		}
  	};
  };
  // -----------------------------------------------------
  MovieClip.prototype.klicken = function() {
  	var wachsen = 350;
  	mouse.hide();
  	delete this.onEnterFrame;
  	this._x0 = _root._xmouse - this._x;
  	this._y0 = _root._ymouse - this._y;
  	this.swapDepths(_root.niveau += 20);
  	this.onEnterFrame = function() {
  		this._x = _root._xmouse - this._x0;
  		this._y = _root._ymouse - this._y0;
  		this._rotation += (0 - this._rotation) / 3;
  		this._xscale += (wachsen - this._xscale) / 3;
  		this._yscale += (wachsen - this._yscale) / 3;
  	};
  };
  // -----------------------------------------------------
  MovieClip.prototype.loslassen = function() {
  	mouse.show();
  	delete this.onEnterFrame;
  	this.onEnterFrame = function() {
  		this._rotation += (this._r - this._rotation) / 2;
  		this._xscale += (70 - this._xscale) / 2;
  		this._yscale += (70 - this._yscale) / 2;
  		if (this._xscale < 72) {
  			this._rotation = this._r;
  			this._xscale = 70;
  			this._yscale = 70;
  			delete this.onEnterFrame;
  			//trace(this._name);
  		}
  	};
  };
  // -----------------------------------------------------
  function gehen_y(panel) {
  	for (var i = 0; i < panel.length; i++) {
  		clip = _root.createEmptyMovieClip("rahmen" + i, i);
  		//--------------------
  		clip._alpha = 60;
  		clip.lineStyle(4, 0, 20);
  		clip.moveTo(-52, 50);
  		clip.lineTo(55, 50);
  		clip.lineTo(55, -47);
  		//--------------------
  		clip.moveTo(55, -50);
  		clip.lineStyle(0, 0x999999);
  		clip.beginFill(0xFFFEFD, 100);
  		clip.lineTo(-55, -50);
  		clip.lineTo(-55, 50);
  		clip.lineStyle(0, 0);
  		clip.lineTo(55, 50);
  		clip.lineTo(55, -50);
  		clip.endFill();
  		//--------------------
  		clip._x = 150 + 270 * Math.random();
  		clip._y = 100 + 200 * Math.random();
  		clip._r = -30 + 60 * Math.random();
  		clip._rotation = clip._r;
  		//--------------------
  		clip.onPress = klicken;
  		clip.onRelease = loslassen;
  		clip.onReleaseOutside = loslassen;
  		//--------------------
  		clip.createEmptyMovieClip("zielclip", i + 200);
  		clip.zielclip._x = -50;
  		clip.zielclip._y = -45;
  		clip.lade_jpg(panel[i] + "?" + random(99999), clip.zielclip, 0xCC0000);
  	}
  }
  //------------------------------------------------------
  niveau = 10000;
  var img = new Array();
  img[0] = "http://www.meineseite/bilder/01.jpg";
  img[1] = "http://www.meineseite/bilder/02.jpg";
  img[2] = "http://www.meineseite/bilder/03.jpg";
  img[3] = "http://www.meineseite/bilder/04.jpg";
  img[4] = "http://www.meineseite/bilder/05.jpg";
  gehen_y(img);
  stop();
  //------------------------------------------------------
 
Hi,

Welcher Clip in dem Script ist denn der, der gelöscht werden soll? Auf den ersten Blick würde ich sagen, es handelt sich um das "ziel", das dem Prototype übergeben wird. Wenn es sich dabei um eine Instanz handelt, die sich schon auf der Bühne befindet, kannst Du sie mit removeMovieClip nicht löschen. Wenn es sich um den "lader" handelt, musst Du Dir die vorherigen Werte der Variable "_global.niveauClip" merken.

Allerdings halte ich es für sehr ungünstig, bei diesem Script mit mehreren Schlüselbildern zu arbeiten. Die Anzeige mehrerer Sets lässt sich sicher viel eleganter in einem Schlüsselbild realisieren, ohne dauernd diverse Funktionen zu überschreiben.

Poste bitte einmal die komplette Datei, dann kann ich mal einen Blick darauf werfen.

Gruß
.
 
Nachtrag: Es muss natürlich heissen:
PHP:
for (var i in _root) {
	if (typeof(_root[i]) == "movieclip") {
		if (_root[i]._name.indexOf("rahmen") == 0) {
			_root[i].removeMovieClip();
		}
	}
}
(Der Index muss auf 0 und nicht auf true geprüft werden)

... ob es damit nun getan ist, teste ich im Moment und melde mich dann ggf. noch einmal.

Gruß

EDIT: Jupp, das wars - geht alles (und natürlich musst Du Mouse mit großem "M" schreiben ;) )
.
 
Zuletzt bearbeitet:
Zurück