Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-07-2004, 10:35   #1 (permalink)
Neuer User
 
Benutzerbild von mimaba
 
Registriert seit: May 2003
Beiträge: 81
problem mit parameterübergabe an funktion

hab ein kleines problem parameter an eine funtion zu übergeben, welche aus einer methode gestartet wird.
wie kann ich das umbauen das die funktion beliebig viele parameter empfangen kann ?
Code:
MovieClip.prototype.fadeClip = function(param1, param2) {
	// mach was, in diesem fall movieclip ein/ausblenden
	this._alpha += param1;
	if (this._alpha == param2) {
	}
	// wenn fertig, onFadeDone() ausführen falls definiert
	if (this.onFadeDone) {
		this.onFadeDone();
		delete this.onFadeDone;
	}
};
//
var test = "bla";
mc.onFadeDone = function(test) {
	trace(arguments[0]);	// ergibt undefined ?
	
};
// movieclip faden
mc.fadeClip(param1, param2);
mimaba ist offline   Mit Zitat antworten
Alt 09-07-2004, 10:58   #2 (permalink)
The Man Who Wasn't There
 
Benutzerbild von fraggle two
 
Registriert seit: Jul 2003
Ort: BÄRLIN
Beiträge: 1.156
hi,

was soll denn da überhaupt passieren?
rufst du die prototyp funktion in einem onEnterFrame auf?
sonst funktioniert das faden wohl auch nicht.

bei welcher function funktioniert den die übergabe nicht?

onFadeOut?

var test = "bla";
mc.onFadeDone = function(test) {
trace(arguments[0]); // ergibt undefined ?
}

so geht das nicht...

das test in der klammer der function ist ja nur der bezeichner des arguments welches in der funktion benutzt wird.

da kannste nicht ne variable test anlegen die dann da wo test steht eingefügt wird.

du mußt beim aufruf der funktion schon nen parameter übergeben:
ActionScript:
  1. onFadeDone = function(test) {
  2.     trace(arguments[0]);    // ergibt "bla" !
  3. }
  4. onFadeDone("bla");
  5. stop();

erst mal so weit.

gruß
mike
__________________
Dot-Realities
Mike Broders
Berlin

ICQ:105925103

Dot-Realities v4.0 under construction!
fraggle two ist offline   Mit Zitat antworten
Alt 09-07-2004, 12:00   #3 (permalink)
Neuer User
 
Benutzerbild von mimaba
 
Registriert seit: May 2003
Beiträge: 81
hi,

da hab ich mich wohl etwas unklar ausgedrückt bin halt noch ein Noob , ich habe methoden mit denen ich z.b. movieclips skaliere oder bewege oder fade.. das mach ich mit onEnterFrame oder setInterval. am ende wird der vorgang in der methode mit delete onEnterFrame oder removeInterval gelöscht und eine callback-funktion (heisst das so ) ausgeführt. das erspart mit bei einfachen dingen extra onEnterFrames oder listener außerhalb zu definieren um zu überprüfen ob die aktionen fertig sind und dementsprechend noch aktionen auszuführen.

ich glaube es wäre wohl besser die funktion als parameter an die methode mit zu übergeben:

Code:
Movieclip.prototype.tween = function(callback, param1, param2) {
	this.onEnterFrame = function() {
		if (this._alpha>=0) {
			this._alpha--;
		} else {
			delete this.onEnterFrame;
			callback(param1, param2);
		}
	};
};
und dann so aufzurufen:

Code:
function tuewas(param1, param2){
        trace(param1);
        trace(param1);
}
mc.tween(tuewas, "bla1", "bla2");
weiss jetzt aber nicht ob das sinn mach
mimaba ist offline   Mit Zitat antworten
Alt 09-07-2004, 12:02   #4 (permalink)
Flashaholic
 
Benutzerbild von atothek
 
Registriert seit: Feb 2003
Ort: Berlin
Beiträge: 1.459
wie fraggle schon sagt mit arguments. arguments wie man erkennt ist ein Array dieses kannste auch an eine funcktion weitergeben mit der methode apply zb

PHP-Code:
meinFunk1 = function () {
    
meinFunk2.apply(thisarguments);
};
meinFunk2 = function () {
    for (var 
i in arguments) {
        
trace(i+": "+arguments[i]);
    }
};
var 
var5 "arg5";
meinFunk1("arg1""arg2"34var5); 
__________________
TVNEXT Solutions
atothek ist offline   Mit Zitat antworten
Alt 09-07-2004, 12:07   #5 (permalink)
Flashaholic
 
Benutzerbild von atothek
 
Registriert seit: Feb 2003
Ort: Berlin
Beiträge: 1.459
na ja da macht es doch schon sinn feste eigene events zu nutzen zB. onTweenEnd, oder onTweenFinished und diese fest zu integrieren und als events zu etablieren

dein ansatz ist da schon korrekt

PHP-Code:
Movieclip.prototype.tween = function(param1param2) {
    
this.onEnterFrame = function() {
        if (
this._alpha>=0) {
            
this._alpha--;
        } else {
            
delete this.onEnterFrame;
            
this.onTweenFinished(param1param2);
        }
    };
};
meinMc.tween("arg1""arg2");
meinMc.onTweenFinished=function(){
trace(arguments);

__________________
TVNEXT Solutions
atothek ist offline   Mit Zitat antworten
Alt 09-07-2004, 12:07   #6 (permalink)
The Man Who Wasn't There
 
Benutzerbild von fraggle two
 
Registriert seit: Jul 2003
Ort: BÄRLIN
Beiträge: 1.156
neee...

dann schon eher so:

ActionScript:
  1. Movieclip.prototype.tween = function(param1, param2) {
  2.     this.onEnterFrame = function() {
  3.         if (this._alpha>=0) {
  4.             this._alpha--;
  5.         } else {
  6.             delete this.onEnterFrame;
  7.             tuewas(param1, param2);
  8.         }
  9.     };
  10. };
  11. function tuewas(param1, param2){
  12.         trace(param1);
  13.         trace(param1);
  14. }
  15. mc.tween("bla1", "bla2");

gruß
mike
__________________
Dot-Realities
Mike Broders
Berlin

ICQ:105925103

Dot-Realities v4.0 under construction!
fraggle two ist offline   Mit Zitat antworten
Alt 09-07-2004, 12:11   #7 (permalink)
Flashaholic
 
Benutzerbild von atothek
 
Registriert seit: Feb 2003
Ort: Berlin
Beiträge: 1.459
nene fraggle das ist ja nur sinnvoll wenn immer die gleiche methode von allen mc aufgerufen werden soll ich denke hierebei ist eher das events modell sinnvoll siehe ^. auch wenn immer die gleiche methode aufgerufen werden soll fürde ich das eher über ein event machen als über eine starre lösung zB.

PHP-Code:
_global.calledFromAll=function(){
trace("globale func");
}
meinMc1.onTweenFinished=function(){
_global.calledFromAll();
}
meinMc2.onTweenFinished=function(){
_global.calledFromAll();

__________________
TVNEXT Solutions
atothek ist offline   Mit Zitat antworten
Alt 09-07-2004, 12:12   #8 (permalink)
The Man Who Wasn't There
 
Benutzerbild von fraggle two
 
Registriert seit: Jul 2003
Ort: BÄRLIN
Beiträge: 1.156
hehe...

mal wieder zu langsam...

gruß
mike
__________________
Dot-Realities
Mike Broders
Berlin

ICQ:105925103

Dot-Realities v4.0 under construction!
fraggle two ist offline   Mit Zitat antworten
Alt 09-07-2004, 12:18   #9 (permalink)
Flashaholic
 
Benutzerbild von atothek
 
Registriert seit: Feb 2003
Ort: Berlin
Beiträge: 1.459
na wir haben beide um 11:07 das ist schon CRAZZ
__________________
TVNEXT Solutions
atothek ist offline   Mit Zitat antworten
Alt 09-07-2004, 12:29   #10 (permalink)
Neuer User
 
Benutzerbild von mimaba
 
Registriert seit: May 2003
Beiträge: 81
DANKE ! Habs soweit kapiert, CRAZZ wie schnell man hier ne Antwort bekommt
mimaba ist offline   Mit Zitat antworten
Alt 09-07-2004, 12:31   #11 (permalink)
Flashaholic
 
Benutzerbild von atothek
 
Registriert seit: Feb 2003
Ort: Berlin
Beiträge: 1.459
@mimaba ist aber nicht immer so
__________________
TVNEXT Solutions
atothek 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 04:38 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele