Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-11-2006, 10:37   #1 (permalink)
Flash and chips.
 
Benutzerbild von Zett
 
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.
Zett ist offline   Mit Zitat antworten
Alt 09-11-2006, 11:09   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
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);
oder gehts dir darum?
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)
hgseib ist offline   Mit Zitat antworten
Alt 09-11-2006, 12:15   #3 (permalink)
Flash and chips.
 
Benutzerbild von Zett
 
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});
loadMC beinhaltet einen MovieClipLoader, der bei onloadComplete LC_func, also wait ausführt. im wait:

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);
		}
	}
}
in dieser version wird die ELSE-zeile ausgefürt, da obj.func ein string is, und daher funkt's auch.

ü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.
Zett ist offline   Mit Zitat antworten
Alt 09-11-2006, 13:35   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
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
hgseib ist offline   Mit Zitat antworten
Alt 09-11-2006, 14:35   #5 (permalink)
Flash and chips.
 
Benutzerbild von Zett
 
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.
Zett ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 06:29 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele