Zielpfad

1manni1

Erfahrenes Mitglied
Nun ich habe diesen code oder eben codeausschnitt
Code:
var tl = this;
for (var i = 1; i<=6; i++) {
	tl["btn"+i].num = i;
	tl["btn"+i].onRelease = function() {
		tl["text"+tl.clicked.num].onEnterFrame = function() {
			this.prevFrame();
			if (this._currentframe == 1) {
				delete this.onEnterFrame;
			}
		};
		tl.clicked = this;
		tl.akt = tl["win"+this.num];
		switchMenu();
	};

Es geht um diese zeile
tl.akt = tl["win"+this.num];
So ist sie normal nun habe ich aber die instanz win1 oder eben "win"+this.num
von dem movieclip navi in _root kopiert.

wie schaffe ich es nun von navi auf diesen movieclip zuzugreifen.
zur verdeutlichung habe ich einfach mal den Zielpfadeditor als bild in anhang gemacht
 

Anhänge

  • zielpfad.jpg
    zielpfad.jpg
    53,1 KB · Aufrufe: 25
Hi,

da "tl" auf die aktuelle Zeitleiste verweist, Du aber einen Pfad nach _root brauchst, sollte Dir so geholfen sein:
Code:
tl.akt = _root["win"+this.num];

Gruß
.
 
achso dankeschön habe schon die ganzen zeit rumgeräzelt
und solche sachen ausprobiert

tl.akt = [_root."win"+this.num];
tl.akt = [_root+"win"+this.num];

^^ gingen alle nicht
 
Da bemerke ich gerade nun ist dardurch ein weiterer bug entstanden aber ich weiß nicht genau wie ich den beheben kann.

Code:
switchMenu = function () {
	if (!tl.opened) {
		tl.opened = tl.akt;
	}
	if (!tl.opened.onEnterFrame) {
		tl.opened.onEnterFrame = function() {
			this.prevFrame();
			if (this._currentframe == 1) {
				delete this.onEnterFrame;
				tl.akt.play();
				tl.opened = tl.akt;
			}
		};
	}
};

Damit ging früher der content also win zu wenn man auf einen anderen btn geklickt hatte nun geht das aber irgendwie nicht mehr :(
 
Hi,

da ich nicht wissen kann, welche Objekte und Zeitleisten damit angesprochen werden sollen, würde ich Dich bitten, die Quelldatei (fla) einmal als Anhang zu posten.

Gruß
.
 
werde ich natürlich will ja das mir geholfen wird.

die instanzen win werden später noch anderst gelegt ist zu wegen der übersichtlichkeit.

Habe auch noch schnell ausprobiert wo es oft passiert:
zwischen home/impressum
zwischen referenzen/tools

Und was ich auch noch nicht geschafft hab ist dass die der movieclip sich nur bewegt wenn man in seiter gegend ist und ebenso das er sich vielleicht ein bisschen langsamer bewegt
 

Anhänge

  • navi.zip
    12,5 KB · Aufrufe: 9
Zuletzt bearbeitet:
Hi,

der Grund für Dein Problem liegt in der Funktion "setzePano" auf _root: Dadurch wird die komplette Navigation dupliziert; es bestehen dann also zwei Instanzen von "navi".

Klickst Du auf der ersten einen Button an, werden zwar in dieser Instanz von "navi" die Variablen "klicked", "akt" und "opened" gesetzt, die zweite Instanz bekommt davon aber nichts mit. Klickst Du nun einen Button auf der zweiten Instanz an, so ist dort z.B. "opened" noch unbekannt, der geöffnete Inhalt kann also nicht entfernt werden.

Das Problem tritt daher immer dann auf, wenn Du mit einem Klick von einer Navigation in die andere wechselst.

Probiers mal mit diesem Code, der die Variablen, die für die Speicherung des aktuellen Inhalts zuständig sind (opened, akt und klicked) global auf _root anlegt:
Code:
var tl = this;

for (var i = 1; i<=6; i++) {
	tl["btn"+i].num = i;
	tl["btn"+i].onRelease = function() {
		tl["text"+_root.clicked.num].onEnterFrame = function() {
			this.prevFrame();
			if (this._currentframe == 1) {
				delete this.onEnterFrame;
			}
		}
		_root.clicked = this;
		_root.akt = _root["win"+this.num];
		switchMenu();
	}

	tl["btn"+i].onRollOver = function() {
		if (tl["text"+this.num]._currentframe != 15) {
			delete tl["text"+this.num].onEnterFrame;
			tl["text"+this.num].play();
		}
	}
	
	tl["btn"+i].onRollOut = function() {
		if (tl.clicked != this) {
			tl["text"+this.num].onEnterFrame = function() {
				this.prevFrame();
				if (this._currentframe == 1) {
					delete this.onEnterFrame;
				}
			}
		}
	}
}

function switchMenu() {
	if (_root.opened == undefined) {
		_root.opened = _root.akt;
	}
	var obj = _root.opened;
	if (!obj.onEnterFrame) {
		obj.onEnterFrame = function() {
			this.prevFrame();
			if (this._currentframe <= 1) {
				this.stop();
				delete this.onEnterFrame;
				_root.opened = _root.akt;
				_root.akt.play();
			}
		}
	}
}

Gruß
.
 
jo dankeschön klappt perfekt.
Nun noch eine frage:

Ich wollte ja das sich das menü nur bewegt wenn man auf diesem auch ist.
jetzt habe ich einfach das in die as von _root geschrieben:

Code:
function setzePano (obj) {
		obj.mittelpunkt = 500
		obj.umkehrPunkt = (obj._width - (obj.mittelpunkt * 2)) / 2
		duplicateMovieClip (obj,"navi2", 16385 )
		navi2._y = obj._y
		obj.onRollOver = function(){
			obj.onEnterFrame = function  () {
				this._x = this._x + ((this.mittelpunkt - this._parent._xmouse) / 10)
				if (this._x < 0 - this.umkehrPunkt) {
					this._x = this._x + this._width
					}
				if (this._x - this._width > 0 - this.umkehrPunkt) {
					this._x = this._x - this._width
					}
				this._parent.navi2._x = this._x - this._width
				}
			}
		}
		
getURL("FSCommand:allowscale","false")
outline.swapDepths(10)
setzePano(navi);

jetzt ist es so, das das menü sich erstbewegt wenn man draufkommt.
Allerdings weiß ich nicht genau wie man es schafft mit onRollOut das dies wieder aufhört und eben stopt
 
Hi,

Du solltest hier anders vorgehen (zumal es ja zwei Instanzen des Menüs gibt, die beide auf die Mausposition reagieren sollen):

Lege auf einer neuen Ebene einen transparenten MovieClip an, den Du innerhalb der onEnterFrame-Methode auf Kollision mit der Maus überprüfst: Im Falle keiner Kollision verlässt Du die onEnterFrame-Methode per return.

Gruß
.
 
ok das hab ich mal versucht geht aber noch nicht so wirklich.
Ich habe den movieclip einfach mal noch ned durchsichtig gemacht das man sieht wo er ist.
Aber naja ka^^
Hab die datei im anhang
 

Anhänge

  • navi.zip
    13,4 KB · Aufrufe: 15

Neue Beiträge

Zurück