function Ebenen problem

John86

Mitglied
Guten Morgen allerseits!
Hab ein Problem und komme im Moment nicht weiter. Habe einen mc in dem eine Funktion aufgerufen wird, diese Funktion liegt eine Ebene höher, also auf root. Jetzt hätte ich es gerne wenn die Funktion sich auf die Ebene beziehen würde wo sie aufgerufen wird, also eine Ebene tiefer, aber ich kriege es nicht hin das es funktioniert:( Hat vielleicht jemand ne Idee wie ich das umsetzten könnte?!

LG Artur
 
Hallo,

du könntest der Funktion als Parameter die Zeitleiste mitgeben, mit der gearbeitet werden soll:
Code:
function doSomething (mc) {
   trace (mc); 
   mc.doSomethingElse();
}

Der Aufruf im MovieClip würde dann so aussehen:
Code:
_root.doSomething(this);


gruss
 
anscheinend habe ich irgedndwo einen Denkfehler drin, hab das versucht folgendermaßen zu lösen, das liegt auf root:
Code:
    _global.knopfraus = function(but) {
    trace(but);
        delete this.onEnterFrame;    
        play();
}


    _global.knopfrein = function(but) {
    trace(but);
            this.onEnterFrame = function() {        
            this.prevFrame();        
            if (this._currentframe == 1) 
            {            
            delete this.onEnterFrame;        
            }    
            };
}
und das im MC:
Code:
  on (rollOver){
    knopfraus(this);
    }
    
        on (rollOut){
        
        knopfrein(this);
        }
 
Hallo,

das _global-Objekt ist (wie logisch) ein Objekt und verfügt über keine Zeitleiste. Deshalb werden Aufrufe wie this.onEnterFrame in einer Funktion, die auf dem _global-Objekt deklariert wird, zu nichts führen.
Dazu kommt, dass du diese Funktionen auch wieder über die _global-Konstante aufrufen müsstest.

Nun könntest du das Problem auf zwei Arten lösen:

1. Du bleibst bei der _global-Funktion und korrigierst die Funktionsaufrufe und die Referenzierung:

Auf der Hauptzeitleiste:
Code:
_global.knopfraus = function(but) {
        delete but.onEnterFrame;    
        _root.play();
}

_global.knopfrein = function(but) {
      but.onEnterFrame = function() {        
            this.prevFrame();        
            if (this._currentframe == 1) 
            {            
            delete this.onEnterFrame;        
            }    
      };
}

Auf dem MovieClip (Auzug):
Code:
on (rollOver){
    _global.knopfraus(this);
}

Oder aber, und das würd ich dir auch empfehlen, du lässt das _global-Obekt beiseite und referenzierst die Funktion über die Zeitleiste, auf der sie deklariert wurde: Über _root.

Code:
knopfraus = function (but) {
	delete but.onEnterFrame;
	but.play();
}

knopfrein = function(but) {
	but.onEnterFrame = function() {
		this.prevFrame();
		if (._currentframe == 1) {
			delete this.onEnterFrame;
		}
	}
}

Auf dem MovieClip:
Code:
on (rollOver){
    _root.knopfraus(this);
}

gruss
 
Zurück