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

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-05-2005, 16:03   #1 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
Question EventProxy.as -- Argumente übergeben?

hallo,

habe heute versucht mit der EventProxy Klasse was anzustelle, soweit klappt das auch ganz gut nur ich bekomme es nicht hin argumente an die funktion zu übergeben:

EventProxy.as
ActionScript:
  1. /*
  2. EventProxy class
  3. Allows:
  4. -scope of events to be changed
  5. -events calls to be proxied to arbitrary functions
  6. */
  7.  
  8. class com.macromedia.mesh.events.EventProxy
  9. {
  10.  private var receiverObj:Object;
  11.  private var funcName:String;
  12.  
  13.  /*
  14. Constructor:
  15. -receiverObj : the receiverObj in which the event will be called
  16. -the function name to be called in response to the event
  17. */
  18.  function EventProxy(receiverObj:Object, funcName:String)
  19.  {
  20.   this.receiverObj = receiverObj;
  21.   this.funcName = funcName;
  22.  }
  23.  
  24.  //this is called before the event is broadcast by the components
  25.  private function handleEvent(eventObj:Object):Void
  26.  {
  27.   //if not function name has been defined
  28.   if(funcName == undefined)
  29.   {
  30.    //pass the call to the event name method
  31.    receiverObj[eventObj.type](eventObj);
  32.   }
  33.   else
  34.   {
  35.    //pass the call to the specified method name
  36.    receiverObj[funcName](eventObj);
  37.   }
  38.  }
  39. }

ich benutz sie so auf nem button:
ActionScript:
  1. private function erstelleMenuNeuesDokument() {
  2.     trace("erstelleMenuNeuesDokument() aufgerufen")
  3.  
  4.     var tiefe = 0
  5.    
  6.     var but:Button = neuesdok.createClassObject(Button, "neu", tiefe++);
  7.     but.label = "Erstelle Map";
  8.     but.addEventListener("click", new EventProxy(this,"erstelleNeueMap"));
  9.     }
  10.  
  11. private function erstelleNeueMap(gridBreite:Number,gridHoehe:Number,tileGroesse:Number) {
  12.     trace("erstelleNeueMap( "+gridBreite+", "+gridHoehe+", "+tileGroesse+" ) aufgerufen")
  13. }

und möchte drei Parameter an die Funktion übergeben. Habs schon versucht nen String zusammenzubauen (wird ja als String übergeben) und abenteuerliche Konstruktionen mit [] bzw {} probiert. Funktioniert alles irgendwie nicht.

Könnt ihr mir bitte auf die Sprünge helfen woran es harkt oder gibts da sogar ne bessere Lösung dafür?
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 01-05-2005, 22:12   #2 (permalink)
skinny
Gast
 
Beiträge: n/a
EventProxy habe ich noch nicht verwendet, aber schau Dir doch mal die Delegate-Klasse von Andre Michelle an. Die liegt im event-Verzeichnis der Game Package (http://www.gamepackage.org/ ). Ich habe die Klasse für mein letztes Projekt benutzt und bin ganz glücklich damit.
z.B. mc.onRollOver = Delegate.createArgs ( this, rollOver, arg1, arg2, arg3 );
  Mit Zitat antworten
Alt 03-05-2005, 08:31   #3 (permalink)
Flashaholic
 
Benutzerbild von atothek
 
Registriert seit: Feb 2003
Ort: Berlin
Beiträge: 1.459
ansich muß die proxy methode erstmal public sein da der zugriff von außerhalb der klasse kommt, aber das ist nich das problem wie skinny schon andeutet werden bei der EventProxy klasse keine optionalen arguments unterstützt. was in deinem fall mehr sinn machen würde wäre folgende klasse

ActionScript:
  1. class Delegate {
  2.    
  3.     private function Delegate(){};
  4.  
  5.     public static function create(pObj, pFunc) : Function {
  6.         var args : Array = arguments.splice(2);
  7.         return function(){
  8.             if(pFunc instanceof Function)
  9.                 return pFunc.apply(pObj, arguments.concat(args));
  10.             else
  11.                 return pObj[pFunc].apply(pObj, arguments.concat(args));
  12.         };
  13.     }
  14. }
die unterstützt arguments verwendung wie folgt

but.addEventListener("click", Delegate.create(this,"erstelleNeueMap", 20, 20, 5 ));

mfg alex
__________________
TVNEXT Solutions
atothek ist offline   Mit Zitat antworten
Alt 04-05-2005, 23:52   #4 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Ort: Kalifornien
Beiträge: 239
Hier ist ein Beispiel fuer die Proxy class.

http://flashscript.biz/MX2004/OOP_tu...0Proxy%20class
__________________
Es war schon immer etwas teurer, einen guten Flash Film zu machen.
www.flashscript.biz
cancerinform 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 13:00 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele