dynamische Movieclips tiefer legen ;)

Mayday171

Erfahrenes Mitglied
Hallo,

Ich erstelle dynamisch in einer as Klasse einen viele Movieclips in einer Schleife. Im MainMovie hab ich eine art Rahmen mit Button. Der Button liegt etwas über dem MovieClips die erstellt werden, bzw. er sollte drüber liegen. Leider liegt der Button unter den movieClips und ich wieß nicht mehr weiter wie ich den Button eine Lage höher bekommen soll.

Mein Ansatz sah so aus:

PHP:
for(var i=0;i<anzahl;i++) {													
				img[i] = _root.createEmptyMovieClip("bild"+i,i); 	//  Leerer Container wird in Array geschrieben
				img[i].swapDepths(-100);

klappt aber nix...

Weiß jemand Rat?

Danke

MfG
 
Hallo,

du tauschst jeden ausser dem ersten der in der Schlaufe erstellten MovieClips mit dem vorherigen. Das bedeutet, dass am Schluss der zuletzt erstellte MovieClip tatsächlich auf -100, alle andern aber bloss auf i+1 liegen...

Meiner Meinung nach müsstest du den zuletzt erstellten MovieClip mit dem Button tauschen:

Code:
img[anzahl-1].swapDepths(meinButton);

gruss
 
DANKE
Das hat mir schonmal weitergeholfen.

Hab jetzt aber ein weiteres Problem. Es sind nämlich 2 Buttons.
Genauer gesagt ein Pause und ein Play Button. Der Pause Button liegt über den Play Button.

Wenn ich nun folgenden Code ausführe:

PHP:
for(var i=0;i<anzahl;i++) {
			 
				img[i] = _root.createEmptyMovieClip("bild"+i,1+i); 	//  Leerer Container wird in Array geschrieben
				img[anzahl-1].swapDepths(_root.pa);
				_root.pl.swapDepths(_root.pa);

Es passt zwar dann alles mit dem Pause Button, aber da dieser verschwindet sobald man ihn drück und dann eigentlich er Play Button zum vorschein kommen sollte klappt das doch wieder irgendwie nicht. Der Play Button bleibt weiterhin hinter dem MovieClip.

Wie löse ich das jetzt

MfG
 
Hallo,

wenn du den pl-Button mit dem pa-Button, den du im Authoring-Modus auf die Bühne gelegt hast, tauschst, ist pa ja wieder auf irgendwie -16000...
Und warum nun 1+i? :confused:
Probier mal das hier

Code:
for (var i = 0; i < anzahl; i++) {
     img[i] = _root.createEmptyMovieClip("bild"+i, i);
}
pa.swapDepths(anzahl+1);
pl.swapDepths(anzahl+2);

gruss
 
geht leider auch nicht!

1+i war nur von einen damaligen Test. Kann die pa und pl so hoch wie nur geht swappen der MovieClip liegt immer oben drüber. Versteh ich nicht.

MfG
 
Hallo,

i+1 stand nur für die resultierende Tiefenebene ;). War mehr zur Veranschaulichung gedacht.

Poste doch mal deine *.fla oder relevante Auszüge davon.

gruss
 
Das ist die as Klasse :

PHP:
import mx.controls.Alert

class Produkt {
	
	public var strpos;
	public var startnumber;
	public var filename;
	public var img,ersatz;
	public var anzahl;
	public var x,y;
	public var pfad;
	public var error:Error;
	public var ctersatz,ct;
	public var bildnummer;
	
	
	function Produkt(x,y, anzahl,firstfilename) {
		  this.strpos      = firstfilename.indexOf(".")
		  this.startnumber = substring(firstfilename,strpos,1);
		  this.filename    = substring(firstfilename,1,strpos-1)
		  this.img         = new Array(anzahl);
		  this.anzahl      = anzahl;
		  this.pfad        = pfad;
		 for(var i=0;i<anzahl;i++) {
			 
				img[i] = _root.createEmptyMovieClip("bild"+i,i); 	//  Leerer Container wird in Array geschrieben
				//img[anzahl-1].swapDepths(_root.pa);
				//img[anzahl-1].swapDepths(_root.pl);
				
				//_root.pl.swapDepths(_root.pa);
				
				if(x==400 && y==250) {
					img[i]._x=0;
					img[i]._y=77;
				}
				else if(x==400 && y==300) {
					img[i]._x=0;
					img[i]._y=27;
				}
				else {
					Alert.show("Das Bilder müssen eine Größe von 400 x 250 oder 400 x 300 haben","Falsche Größenangabe");
				}
				img[i]._visible=false;		
				ctersatz = img[i].createEmptyMovieClip("ctersatz",1);
				ct = img[i].createEmptyMovieClip("ct",2);				// leerer Container wird in vorherigen Cont	ainer geschrieben
				
				bildnummer=i+parseInt(startnumber);
				if(bildnummer>=10) {
					ctersatz.loadMovie("na.jpg");
					ct.loadMovie(substring(filename,0,strpos-2)+bildnummer+".jpg");
				}else if(bildnummer>=100) {
					ctersatz.loadMovie("na.jpg");
					ct.loadMovie(substring(filename,0,strpos-3)+bildnummer+".jpg");
				}
				else {
					ctersatz.loadMovie("na.jpg");
					ct.loadMovie(substring(filename,0,strpos-1)+bildnummer+".jpg");
				}
				//if(i==35) break;
				
		}
		
	}
	
	public function rechts() {
		var l=-1;
		var that:Produkt = this;
		_root.onEnterFrame=function() {
			if((that.ct._width>0 && that.ct._height>0) || (that.ctersatz._width>0 && that.ctersatz._height>0)) {            // wenn die Bilder geladen sind
				if(l==that.anzahl-1) { 							 // wenn das letzte Bild erreicht ist
					that.img[l]._visible=false; 				 //  zurücksetzen
					l=-1; 								 //
				}                                             
				that.img[l]._visible=false;		
				l++;
				that.img[l]._visible=true;	
			}
		}
	}
}

Die Methoden werden dann im Hauptfilm aufgerufen.
Wenn du es ausprobieren willst schmeiß einfach mal ein paar andere Bilder rein.

Hoffentlich kannst du mir helfen. Verzweifle schon bald mit diesen Tiefenquatsch!!
Bin da noch nie mit zurecht gekommen

MfG
 
Zurück