• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-08-2008, 17:06   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 303
Question leeren Parameter übergeben bei Funktionsaufruf

Bei mir wird eine Funktion ständig bei resize der Bühne aufgerufen. Das klappt auch. Nur was muss ich als Parameter angeben wenn ich diese Funktion am Anfang einmalig aufrufen will?

PHP-Code:
stage.addEventListener(Event.RESIZEpositionieren);

function 
positionieren(evt:Event):void {
    
warten.stage.stageWidth/2;
    
warten.stage.stageHeight/2;
}
positionieren(???); 
Flash Fehler, wenn ich keinen Parameter bei ??? hinschreibe
1136: Falsche Anzahl von Argumenten. 1 erforderlich.
__________________
Vielen Dank an jeden der mir hilft Flash zu lernen!
Bevor ich Fragen stelle durchsuche ich immer ausführlich das Forum und die Flashhilfe.
sara11 ist offline   Mit Zitat antworten
Alt 11-08-2008, 17:09   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 11.856
Mach es besser so:
ActionScript:
  1. stage.addEventListener(Event.RESIZE, onResize);
  2.  
  3. function onResizse(evt:Event):void {
  4.     center();
  5. }
  6.  
  7. function center():void {
  8.     if (stage == null) {
  9.          return;
  10.     }
  11.     warten.x = stage.stageWidth/2;
  12.     warten.y = stage.stageHeight/2;
  13. }
Omega Psi ist offline   Mit Zitat antworten
Alt 11-08-2008, 17:13   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 303
Was bringt das die Funktion erst von einer anderen Funktion aufrufen zu lassen? Warum nicht gleich direkt?

Hierbei wird doch aber die "center" auch erst bei resize aufgerufen. Ich brauche aber schon einen Aufruf vor einem resize.
__________________
Vielen Dank an jeden der mir hilft Flash zu lernen!
Bevor ich Fragen stelle durchsuche ich immer ausführlich das Forum und die Flashhilfe.
sara11 ist offline   Mit Zitat antworten
Alt 11-08-2008, 17:29   #4 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.238
hi sara11,

eben genau das ist der vorteil.
jetzt wird dir die funktion immer aufgerufen, wenn sich die größe der bühne ändert, du kannst sie aber über center() bewusst zuvor selbst aufrufen, selbst wenn das event nicht eintritt. da hat der gute alte omega schon recht (wie sonst).

mfg
shin10
shin10 ist offline   Mit Zitat antworten
Alt 11-08-2008, 17:42   #5 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 303
Ah ich suche nun schon Tage, da ich mich erinnern konnte das mal gelesen zu haben in meinem AS Buch.
Ich muss einfach null übergeben. Das macht man doch wenn man einen Parameter nich setzen will.

PHP-Code:
stage.addEventListener(Event.RESIZEpositionieren);

function 
positionieren(evt:Event):void {
    
warten.stage.stageWidth/2;
    
warten.stage.stageHeight/2;
}
positionieren(null); 
__________________
Vielen Dank an jeden der mir hilft Flash zu lernen!
Bevor ich Fragen stelle durchsuche ich immer ausführlich das Forum und die Flashhilfe.
sara11 ist offline   Mit Zitat antworten
Alt 11-08-2008, 17:44   #6 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 11.856
Ja, so kann man es machen... aber EventListener haben ja schon einen Grund... aber wenn es dir reicht, ist es ok.
Omega Psi ist offline   Mit Zitat antworten
Alt 11-08-2008, 17:58   #7 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 303
Das versteh ich jetzt nicht "Wenn es dir reicht" ?
Was ist dabei anders?
Ich habe doch weiterhin den EventListener der auf den resize der Bühne reagiert. Es geht ja nur darum das diese Funktion beim Anfang einmal schon ausgeführt werden muss. Sonst hängt der Inhalt sonst wo.
Welchen Nachteil hat es wenn ich dazu die Funktion mit
PHP-Code:
positionieren(null); 
einmal ausführen lasse?
__________________
Vielen Dank an jeden der mir hilft Flash zu lernen!
Bevor ich Fragen stelle durchsuche ich immer ausführlich das Forum und die Flashhilfe.
sara11 ist offline   Mit Zitat antworten
Alt 12-08-2008, 10:19   #8 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 303
@Omega Psi
Kannst du mir noch etwas dazu sagen, was bei meiner Vorgehensweise nachteilig ist. Wie ich schon gesagt habe habe ich den EventListener doch immer noch. Nur was ist jetzt die Einschränkung bei meiner Vorgehensweise?
__________________
Vielen Dank an jeden der mir hilft Flash zu lernen!
Bevor ich Fragen stelle durchsuche ich immer ausführlich das Forum und die Flashhilfe.
sara11 ist offline   Mit Zitat antworten
Alt 12-08-2008, 10:38   #9 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 11.856
Wie gesagt, es ist funktional. Und wenn du die Funktion nur einmal brauchst mag es auch egal sein. Wenn du aber generell so codest, kann es schnell passieren, dass du ins schleudern kommst, wenn du nicht zwischen EventListenern und Funktionen unterscheidest (und andere, die deinen Code auch verwenden müssen/sollen/wollen). Eine andere "schönere" Variante wäre noch:
ActionScript:
  1. package fs {
  2.  
  3.     import flash.display.Sprite;
  4.     import flash.events.Event;
  5.  
  6.     public class MySprite extends Sprite {
  7.  
  8.         public function MySprite() {
  9.             super();
  10.             this.initialize();
  11.         }
  12.  
  13.         protected function initialize():void {
  14.             this.addEventListener(Event.ADDED_TO_STAGE, eventListener, false, 0, true);
  15.         }
  16.  
  17.         protected function eventListener(event:Event):void {
  18.             switch(event.type) {
  19.                 case Event.ADDED_TO_STAGE:
  20.                     this.addEventListener(Event.REMOVED_FROM_STAGE, eventListener, false, 0, true);
  21.                     this.addEventListener(Event.RESIZE, eventListener, false, 0, true);
  22.                     this.removeEventListener(Event.ADDED_TO_STAGE, eventListener, false);
  23.                     this.x = stage.width/2;
  24.                     this.y = stage.height/2;
  25.                     break;
  26.                 case Event.REMOVED_FROM_STAGE:
  27.                     this.addEventListener(Event.ADDED_TO_STAGE, eventListener, false, 0, true);
  28.                     this.removeEventListener(Event.RESIZE, eventListener, false);
  29.                     this.removeEventListener(Event.REMOVED_FROM_STAGE, eventListener, false);
  30.                 case Event.RESIZE:
  31.                     this.x = stage.width/2;
  32.                     this.y = stage.height/2;
  33.                     break;
  34.             }
  35.         }
  36.     }
  37. }
Es geht mir nur darum, das Funktionen und EventListener für verschiedene Dinge verwendet werden. Zwar ist es im Endeffekt egal, wenn es doch funktional ist... aber in der Regal macht es Code, vor allen Dingen wenn es mehr als 5 Zeilen sind, schwer zu lesen und nachzuvollziehen, wenn man sich nicht an einfachste Mechanismen oder Konventionen hält.

Es sind aber nur gut gemeinte Ratschläge. Was du machst bleibt natürlich dir überlassen.
Omega Psi 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 02:55 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele