removeMovieClip - Problem !

NetPerformance

Erfahrenes Mitglied
Hallo,

_root.gegner["g"+i]._visible = false; funktioniert !

Die removeMovieClip Anweisung auf die gleiche mc funktioniert nicht ?!

Habe verschiedene Varianten getestet.

Gruß
Aaron

Code:
for(i=1; i<=17; i++)
	{
		if(this.hitTest(_root.gegner["g"+i]))
		{
			// trace("treffer");
			// _root.gegner["g"+i]._visible = false;
			trace(_root.gegner["g"+i]);
			// removeMovieClip(_root.gegner["g"+i])
			// _level0.gegner["g"+i].removeMovieClip;
			// _root.gegner["g"+i].removeMovieClip();
			// _root.removeMovieClip(_root.gegner["g"+i]);
		}
	}

Anhang: MX File
 

Anhänge

Hi,

wenn Du das so schreibst:
_root.removeMovieClip(_root.gegner["g"+i])
, versuchst Du, _root zu entfernen, da Du in diesem Fall die Memberfunktion "removeMovieClip" des MovieClip-Objektes aufrufst (der Parameter wird in diesem Fall ignoriert). Versuch es einmal so:
PHP:
_root.gegner["g"+i].removeMovieClip();

Gruß
.
 
Hi Datic,

Funktioniert leider so auch nicht.

Auf _root liegt ein mc. Diese mc beinhaltet 17 weitere mc´s. Eine der 17 soll entfernt werden.

Aaron
 
So, ich habe jetzt mal in Deine Datei hineingesehen: Das klappt nicht, weil Deine Gegner nicht mit createEmptyMovieClip oder attachMovie erstellt wurden. ;)

Entweder, Du instanzierst die Gegner dynamisch zur Laufzeit (eigentlich ratsam, denn so könntest Du z.B. verschiedene Level über eine externe Textdatei anfertigen), oder Du überschreibst den jeweiligen Gegner mit einem leeren Clip:
PHP:
_root.gegner.createEmptyMovieClip("g" + i, _root.gegner["g"+i].getDepth());

Gruß
.
 
Vielen Dank !

mich würde die erste und gleichzeitig saubere Variante eher interessieren.

In diesem Fall muss ich 17 gegner per createEmptyMovieClip erstellen und alle gegner z.b eine Grafik zuweisen. Das geht soweit mit eine for Schleife.

Problem sehe ich nur bei der Anordnung der Gegner. Ich müsste alle Gegner per Hand an die jeweilige _x _y Position anordnen. Bei 50 Gegner wäre die nicht zufällig erzwugt werden sollen, wäre ich nur am ausrichten.

Oder habe ich etwas missverstanden ?!
und was meinst du genau mit "externe Textdatei anfertigen" ?

Gruß und Dank für den Tip
 
HI,


naja, Du könntest Dir z.B. eine XML-Datei anfertigen:
Code:
<brick color="red" x="5" y="10" />
<brick color="blue" x="6" y="10" />
...
(Color hab ich mal reingesetzt, als Beispiel, da man ja z.B. auch verschiedenfarbige Steine, die unterschiedlich viel Punkte geben, erstellen könnte ;) )

Das kanst Du nun auslesen und die Steine instanzieren:
PHP:
var xm = new XML();
xm.ignoreWhite = true;
xm.load("level1.xml");
xm.onLoad = function() {
    for (var i=0; i< this.childNodes.length; i++) {
        var col = this.childNodes[i].attributes.color;
        var obj = _root.gegner.attachMovie("gegner_" + col, "g" + i, i);
        obj._x = this.childNodes[i].attributes.x * stein_breite;
        obj._y = this.childNodes[i].attributes.y * stein_hoehe;
    }
}
Das ist nur ein Beispiel und natürlich unvollständig. Hier bin ich mal davon ausgegangen, dass es in der Bibliothek Steine unterschiedlicher Farbe gibt: "gegner_red", "gegner_blue" usw. stein_breite und stein_hoehe kannst Du irgendwo als globale Variablen definieren.

Gruß
.
 
Zurück