Anzeige

Wie komm ich an diese Variable?

Wie komm ich an diese Variable? | PSD-Tutorials.de

Erstellt von Arceus, 28.10.2008.

  1. Arceus

    Arceus Gesperrt

    Dabei seit:
    28.11.2007
    Beiträge:
    36
    Geschlecht:
    männlich
    Wie komm ich an diese Variable?
    Hallo,
    ich habe auf einen mc ("map1") eine Funktion, diese Funktion beinhaltet eine weitere Funktion und diese wiederums braucht eine Variable aus der ersten Funktion.
    Wie kann ich sie beziehen?^^
    Code (Text):
    1.  
    2. onClipEvent(enterFrame) {
    3. var radar = function() {
    4.     ...
    5. for (var i=1;i<=2;i++) {
    6.     var username = _root["fname" +i];  //Genau diese Variable brauch ich-.-
    7.     ...
    8.     _root["player" +i].onRollOver = function() {
    9.             _root.name_txt.text = username;  //Hier soll sie hin-.-
    10.         }
    11. }
    12. }
    13. radar();
    14. }
    15.  
    Jemand eine Lösung?
     
    Zuletzt bearbeitet: 28.10.2008
    #1      
  2. h_seldon

    h_seldon Aktives Mitglied

    Dabei seit:
    13.09.2005
    Beiträge:
    338
    Geschlecht:
    männlich
    Ort:
    Nähe München
    Wie komm ich an diese Variable?
    AW: Wie komm ich an diese Variable?

    Hallo,

    hmm, das Skript ist in mehrfacher Hinsicht optimierfähig:

    1. sind Objektskripte veraltet. Stattdessen werden nur noch Bildskripte verwendet.
    2. macht es keinen Sinn, in einem enterFrame-Ereignis einer Variablen eine Funktion zuzuweisen bzw. eine Funktion zu deklarieren - das führt nämlich dazu, dass permanent diese Funktion definiert wird, obwohl ein einziges Mal ausreichen würde.
    3. genau so wenig macht es Sinn, in einem enterFrame-Ereignis ein rollOver-Ereignis zuzuweisen, denn auch diese Zuweisung wird permanent ausgeführt. Mit anderen Worten zwingst Du den Player dazu, andauernd überflüssige Arbeit auszuführen.
    4. wird die Variable username zwar innerhalb der Schleife korrekt zusammengesetzt, die zugewiesenen RollOver dagegen können erst dann erfolgen, wenn die Schleife komplett abgearbeitet wurde. Dann enthält username aber nur noch den zuletzt in der Schleife ermittelten Wert, konkret: fname2. Würde also der rollOver ausgeführt, könnte immer nur fname2 im Textfeld angezeigt werden.

    Mögliche Lösung:
    Annahme: auf der Bühne in der Hauptzeitleiste befinden sich vier MovieClips (fname1, fname2, player1, player2) sowie ein einsames, aber deswegen nicht unbedingt trauriges Textfeld (name_txt).
    Bildskript im selben Frame:

    PHP:
    1. //legt die Anzahl der Objekte fest
    2. var nAnzahl:Number = 2;
    3. function radar() {
    4.     for (var i = 1; i<=nAnzahl; i++) { 
    5. //weist jedem Objekt, das nachher auf rollover reagieren soll,
    6. //eine variable zu, in der das gesuchte Element gespeichert wird   
    7. //statt _root wird this verwendet, um Probleme zu vermeiden,
    8. //falls die aktuelle swf per loadMovie in eine andere geladen werden soll
    9.         this["player"+i].username = this["fname"+i];
    10.         this["player"+i].onRollOver = function() {
    11.             name_txt.text = this.username;
    12.         };
    13.     }
    14. }
    15. radar();
    Keine Ahnung, was konkret hinter username steckt. Handelt es sich tatsächlich um einen MovieClip (wie hier angenommen), dann wäre es vielleicht besser, ins Textfeld nur den Instanznamen statt die gesamte Instanz auszugeben.

    Viel Spass
     
    #2      
  3. Nalle

    Nalle Blubberblödi

    Dabei seit:
    06.12.2007
    Beiträge:
    33
    Geschlecht:
    männlich
    Ort:
    Hessen-Wiesbaden
    Kameratyp:
    Conon EOS 7D
    Wie komm ich an diese Variable?
    AW: Wie komm ich an diese Variable?

    du könntest die variable auf der hauptbühne festlegen und mit den funktionen auf diese zugreiffen. z.B.

    var test = 0 // liegt auf der hauptbühne im as

    und bei den funktionen greifst du einfach auf die variable der hauptbühne zu, würde so aussehen

    _root.test (........)


    also das wäre eine einfache lösung
     
    #3      
  4. Arceus

    Arceus Gesperrt

    Dabei seit:
    28.11.2007
    Beiträge:
    36
    Geschlecht:
    männlich
    Wie komm ich an diese Variable?
    AW: Wie komm ich an diese Variable?

    Danke mit deiner Lösung hat es funktioniert :p
    Ich habe das alles in das enterFrame-Event gepackt weil die Funktion kontinuierlich abgearbeitet werden soll. Punkt 4 hatte ich gestern noch selbst schmerzhaft herausgefunden^^
     
    #4      
x
×
×
teststefan