Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-10-2005, 22:17   #1 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
Parameter im Array übergeben?

hallo every1,
ich hoffe ihr könnt mir helfen! ich habe gerade eine kleine klasse geschrieben, die dazu dienen soll, einen Interval mit nur einem durchlauf aufzurufen. effektiv soll sie also einen verzögerten funktionsaufruf bewirken. dabei will ich wie auch bei setInterval() eine funktion übergeben, ein zeitinterval, nach welchem die funktion aufgerufen werden soll, und dann beliebig viele parameter. letzteres ist ein problem! hier erst einmal die klasse:
ActionScript:
  1. class tools.Interval {
  2.    
  3.     private static var _interval;
  4.     private static var _funktion:Function
  5.     private static var _aParameter:Array;
  6.    
  7.     static function interval (funktion:Function, zeit:Number) :Void {
  8.         _funktion = funktion;
  9.        
  10.         _aParameter = new Array ();
  11.         for (var i:Number = 2; i < arguments.length; i++) {
  12.             _aParameter.push(arguments[i]);
  13.         }      
  14.         _interval = setInterval (setinterval, zeit);
  15.     }
  16.    
  17.     private static function setinterval (Void) :Void {
  18.         clearInterval(_interval);
  19. //hier klappts nicht
  20.         _funktion (_aParameter);
  21.     }
  22.    
  23. }
ein beispiel zum aufruf:
ActionScript:
  1. import tools.Interval;
  2.  
  3. Interval.interval(testfunk, 1000, 'erster parameter', 'zweiter parameter');
  4. function testfunk (a, b) {
  5.     trace(a);
  6. //getraced werden (verständlicherweise) "beide" parameter
  7. }
die übergabe einfach mit dem arguments-array scheint nicht zu funktionieren - wie ginge es denn aber sonst? ich hab das hier im forum teilweise schon so gesehen, aber da ging es um anonym definierte funktionen - meine müssen aber bennant sein, da ich private methoden zeitversetzt aufrufen möchte.

sehe ich es richtig, dass, so es denn funktionierte, ein zweiter Interval-aufruf den ersten killen würde, wenn der noch nicht fertig wäre? weil ich statische methoden benutze? gibt es eine möglichkeit, das zu verhindern, und dennoch statisch zu bleiben?

ich freu mich auf euch!
gruß janosch
janoshnosh ist offline   Mit Zitat antworten
Alt 24-10-2005, 22:48   #2 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Habe hier auch so etwas geschrieben, da kann man mit angeben wie oft die Funktion ausgeführt werden soll, vielleicht kannste dir da etwas abgucken.

[class] Interval

EDIT:
mensch, mensch echt zuviel gebechert heute, wahr der falsche post....
__________________
ERROR: Signature is too large

Geändert von rendner[i] (24-10-2005 um 23:09 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 24-10-2005, 22:53   #3 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Verzögerte Aufrufe scheinen ja gerade in Mode zu sein … schon der dritte Thread seit letztem Freitag; was macht ihr nur alle
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 24-10-2005, 22:55   #4 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
hallo und vielen dank,
auf deine klasse bin ich bei meiner suche auch schon gestoßen und auch auf ihre weiterführungen . du scheinst der interval-methode ja einfach das arguments-array mitzugeben.... wie kann ich das in meiner klasse direkt mit der funkion machen?
janoshnosh ist offline   Mit Zitat antworten
Alt 24-10-2005, 22:55   #5 (permalink)
Phil-e
 
Benutzerbild von gonzo47
 
Registriert seit: Jan 2005
Ort: Erde
Beiträge: 82
naja..

@Janoscharlipp:

verzögern halt... also Zeit erzeugen sozusagen denn :

"..der einzige Grund für Zeit ist, dass nicht alles auf einmal passiert.... "


(Douglas Adams)
__________________
Dreckig rein - sauber wieder raus .....

Geändert von gonzo47 (24-10-2005 um 22:58 Uhr)
gonzo47 ist offline   Mit Zitat antworten
Alt 24-10-2005, 22:58   #6 (permalink)
Neuer User
 
Benutzerbild von Xeef
 
Registriert seit: Sep 2004
Ort: Spain/Ibiza
Beiträge: 942
kuk nach "Function.apply" in der hilfe
__________________
Languages : (in the order of knowledge/preference)
Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish
Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar

wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;)
Xeef ist offline   Mit Zitat antworten
Alt 24-10-2005, 22:58   #7 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
um ganz genau zu sein (und den spaß zu verderben), geht es in diesem thread um alles andere als um verzögerte aufrufe , vielmehr geht es darum, einer funktion ein bündel an argumenten zu übergeben. hier am beispiel eines verzögerten aufrufes .
janoshnosh ist offline   Mit Zitat antworten
Alt 24-10-2005, 23:02   #8 (permalink)
Phil-e
 
Benutzerbild von gonzo47
 
Registriert seit: Jan 2005
Ort: Erde
Beiträge: 82
Kein Scherz

das mein ich ernst - völlig !

Gruß
Phil
__________________
Dreckig rein - sauber wieder raus .....
gonzo47 ist offline   Mit Zitat antworten
Alt 24-10-2005, 23:03   #9 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
Zitat:
Zitat von Xeef
kuk nach "Function.apply" in der hilfe
genau das ist es! jetzt versteh ich's auch in rendner[i]'s klasse.
danke!
gruß janosch
janoshnosh ist offline   Mit Zitat antworten
Alt 24-10-2005, 23:30   #10 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
und so können nun alle objekte (in meinem fall mc's) ihren eigenen intervall bekommen, ohne dass sie gegenseitig gekilled werden.
ActionScript:
  1. class tools.Interval {
  2.    
  3.     private static var _aParameter:Array;
  4.    
  5.     public static function interval (obj, funktion:Function, zeit:Number) :Void {
  6.         var _funktion:Function = funktion;
  7.         var _obj = obj;
  8.        
  9.         _aParameter = new Array ();
  10.         for (var i:Number = 3; i < arguments.length; i++) {
  11.             _aParameter.push(arguments[i]);
  12.         }
  13.         _obj = setInterval (function (f, args) {
  14.                 clearInterval(_obj);
  15.                 f.apply (null, args);
  16.             }, zeit, _funktion, _aParameter);
  17.     }
  18.    
  19. }
aufruf über
ActionScript:
  1. Interval.interval(my_mc, my_function:Function, delay:Number, param1, ...., paramN);
es lebe die verzögerung
gruß janosch
janoshnosh ist offline   Mit Zitat antworten
Alt 24-10-2005, 23:52   #11 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Anstatt der for Schleife kannste auch die restlichen Parameter des Array's arguments so in dein Array packen.
PHP-Code:
_aParameter arguments.slicearguments.length ); 
__________________
ERROR: Signature is too large

Geändert von rendner[i] (25-10-2005 um 10:52 Uhr)
rendner[i] 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 15:38 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele