| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Flash and chips. Registriert seit: Jun 2001 Ort: Graz
Beiträge: 531
| seltsames verhalten bei übergabe von funktionen
hallo, ich hab ein paar verschachtelte funktionen - kurz, ich übergebe einer funktion den namen einer anderen, die sie dann am ende aufrufen soll... wenn ich die function als myString = this+".myFunction"; übergebe und dann per eval(myString)(myParams); aufrufe, haut alles hin. übergebe ich aber den pointer this.myFunction, dann ruft er sie AUCH auf - allerdings, wenn ich innerhalb der funktion trace(this); frage, bin ich nicht mehr auf this, wo die funktion liegt, sondern er gibt mir [object Object] zurück... ??? irgendwer eine ahnung?
__________________ The map is NOT the territory. |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
| Code: function fFuncA() {
trace("hallo");
}
function fFuncB(a) {
a();
}
function fFuncC(a) {
a(fFuncA);
}
fFuncC(fFuncB); Code: var xxx = {name:"xxx"};
xxx.test = function() {
trace(this.name);
};
xxx.test();
//
var yyy = {name:"yyy"};
xxx.test.call(yyy);
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (09-11-2006 um 11:18 Uhr) |
| | |
| | #3 (permalink) |
| Flash and chips. Registriert seit: Jun 2001 Ort: Graz
Beiträge: 531
|
okay, das ganze in zusammenfassung: Code: var obj = {func:this+".starter",waitFrames:25};
this.main.table.loadMC({target:this.file,LC_func:this+".wait",LC_param:obj}); Code: MovieClip.prototype.wait = function(obj)
{
this.createEmptyMovieClip("waitMC", this.getNextHighestDepth());
this.waitMC.obj=obj;
var counter=0;
this.waitMC.onEnterFrame = function()
{
counter++;
if (counter==obj.waitFrames)
{
if(typeof obj.func == "function")
obj.func(obj.param);
else
eval(obj.func)(obj.param);
removeMovieClip(this);
}
}
} übergeb ich aber ganz am anfang this.starter als pointer (wenn ich nicht irre), übergibt er ihn brav bis zum wait (typeof obj.func traced function), und er ruft auch den starter auf. der allerdings, in der ersten zeile nach this gefragt, sagt mir plötzlich, dass this [object Object] ist... und genau da steig ich aus... kann es sein, dass die funktion komplett übergeben wird? nicht bloß als pointer?
__________________ The map is NOT the territory. |
| | |
| | #4 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
obj und this.obj sind bei dir 2 unterschiedliche variablen Code: MovieClip.prototype.wait = function(obj) {
this.createEmptyMovieClip("waitMC", this.getNextHighestDepth());
this.waitMC.obj = obj;
var counter = 0;
this.waitMC.onEnterFrame = function() {
counter++;
if (counter == 5) {
obj(1);
obj.call(this, 2);
this.obj(3);
}
};
};
function fTest(nr) {
trace(nr+": "+this);
}
test.wait(fTest);
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #5 (permalink) |
| Flash and chips. Registriert seit: Jun 2001 Ort: Graz
Beiträge: 531
|
tja, ich leg das obj, das der funktion übergeben wird, im waitMC ab. die waitFrames kann er ja auch richtig auslesen, und sofern es ein String ist, auch die func... werd wohl bei der alten, etwas unbeholfenen eval-schreibweise bleiben, die funzt einwandfrei. trotzdem danke!
__________________ The map is NOT the territory. |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |