Funktion über Variable aufrufen

dsturm

Erfahrenes Mitglied
Hi,

mal wieder eine spezielle Frage: Ist es möglich ein Funktionsaufruf über eine Variable zu steuern, also

Code:
var func_name:String = "test";

wobei ich nun die Funktion test() aufrufen wollen würde. Bisher habe ich da keine Möglichkeit entdeckt, leider.
 
Hallo,

ja das kannst du, aber nur wenn du die Variable nicht als String sondern als Funktion definierst ;).

PHP:
var func_name: Function = test;

gruss
 
^^ Hmm, dass hatte ich schon mal gehabt. Leider klappts in meinem Zusammenhang irgendwie nich:

Code:
_global.timer = function (clip:Object, dur:Number, func:Function) {
	var val_start:Number = getTimer();
	clip.onEnterFrame = function() {
		var time:Number = getTimer() - val_start;
		if (time >= dur*1000) {
			delete clip.onEnterFrame;
			func;
		}
	}
}

Aufruf:

Code:
timer(this, 2, function_sowieso);
 
Zuletzt bearbeitet:
Hallo,

seit wann lässt man beim Funktionsaufruf die Klammern weg?

PHP:
_global.timer = function (clip: MovieClip, dur:Number, func:Function) {
	var val_start:Number = getTimer();
	clip.onEnterFrame = function() {
		var time:Number = getTimer() - val_start;
		if (time >= dur*1000) {
			delete clip.onEnterFrame;
			func();
		}
	}
}

gruss

PS: Wenn du schon mit absoluten Variablenzuordnungen arbeiten willst, dann konsequent. Wenn du auf den clip-Parameter eine onEnterFrame-Funktion definierst, muss das übergebene Objekt ein MovieClip sein und nicht irgendein Typ.
 
Zuletzt bearbeitet:
;) Jaaaa, hätte ich nicht gemacht, hätte es dann auch funktioniert. Und da ich dann dachte, er würde versuchen eine Funktion namens func() aufzurufen, habe ich die lieben Klammern weggelassen.

Jedenfalls funktioniert es leider so auch mit Klammern nicht.

Nochmal zum Aufruf

Code:
timer(this, 2, function_sowieso);

Da muss ich ja beim dritten "Wert" die Klammern weglassen, da sonst die Funktion sofort ausgeführt wird. Daher wollte ich den "Funktionsnamen" übergeben, und in der timer() entsprechend aufrufen. Nur dort scheint er weder ein func noch ein func() als Funktion zu interpretieren.
 
Hallo,

folgendes Beispiel hat bei mir funktioniert:

PHP:
_global.timer = function (clip: MovieClip, dur:Number, func:Function) {
    var val_start:Number = getTimer();
    clip.onEnterFrame = function() {
        var time:Number = getTimer() - val_start;
        if (time >= dur*1000) {
            delete clip.onEnterFrame;
            func();
        }
    }
}  

function test () {
	trace ("Function called");
}
_global.timer(this, 10, test);

gruss
 
Zurück