2016-04-16 15 views
0

ich auf der Bühne haben 3 Tasten jede Taste einen Ton spielen ... Ich versuche, den Klassencode dynamischAS3: Variablenwert Zugriff

machen .Aber ich bin mit einem Problem stecken finden Sie den Code .

Ich brauche Hilfe! fla link & class link

Ich möchte den String innerhalb der Variablen nicht nur den Namen erhalten.

package 
{ 
    import flash.display.MovieClip; 
    import flash.events.MouseEvent; 

    public class CustumClass extends MovieClip 
    { 
    private var R1:String ="im a string inside R1"; 
    private var R2:String ="im a string inside R2"; 
    private var R3:String = "im a string inside R3"; 

    private var btns:Array; 
    private var link:String; 

     public function CustumClass() 
     { 
      // constructor code 
      btns = new Array(r1,r2,r3); //___ buttons on stage 
      onLoop(); 

     } 
     private function onLoop():void 
     { 
      for (var i:int = 0; i<btns.length; i++) 
      { 
       btns[i].addEventListener(MouseEvent.CLICK,handleBtn); 
      } 
     } 

     private function handleBtn(e:MouseEvent):void 
     { 
      // ____ i want to get the string inside variable 

      link = e.target.name.toUpperCase(); 
      trace (link); 
     } 
    } 

} 

Antwort

0

Statt die Tasten in einer Array

private var btns:Array; 

Verwendung ein Dictionary

private var buttons:Dictionary = new Dictionary(); 

Dann jede Referenz zusammen mit den String auf eine Schaltfläche hinzufügen zu speichern, die Sie mit ihm verknüpfen mögen

// constructor code 

buttons[r1] = "text for r1"; 
buttons[r2] = "text for r2"; 
buttons[r3] = "text for r3"; 

onLoop(); 

Sie können über die Schlüssel iterieren.

private function onLoop():void 
{ 
    for (var button:Object in buttons) 
    { 
     button.addEventListener(MouseEvent.CLICK,handleBtn); 

     // if above fails, try something like 
     IEventListener(button).addEventListener(MouseEvent.CLICK,handleBtn); 
    } 
} 

Sie können einen Wert mit einem Schlüssel

private function handleBtn(e:MouseEvent):void 
{ 
    trace (buttons[e.currentTarget]); 
} 
+0

Danke Code Arbeit wie Charme abrufen. Ich weiß nur, ob existieren andere Weise, um den Code arbeiten mit Array –

+0

@AyoubHit Wählen Sie ein Werkzeug entsprechend der Aufgabe, nicht umgekehrt. Sie können dies mit einem 'Array' machen, aber es macht wenig Sinn, es so zu machen. Erzwinge keine Lösung mit einem 'Array' auf das Problem. Am besten verwenden Sie weder "Array" noch "Dictionary", sondern definieren eine Klasse für Ihre Schaltflächen. Auf diese Weise benötigen Sie nicht die Datenstrukturen, um die Assoziation von einer Schaltfläche zu einer "Zeichenfolge" zu erstellen, da jede Schaltfläche ihre eigene "Zeichenfolge" kennt. – null

+0

Vielen Dank .Ich verstehe was du meinst –