2016-04-16 4 views
0

я имею на этапе 3 кнопки каждую кнопку должны воспроизводить звук ... я пытаюсьAS3: доступ к переменному значению

сделать код класса динамическим .Но я застрял с проблемой смотрите код ,

Мне нужна помощь! fla link & class link

Я хочу, чтобы строка внутри переменной не только называлась.

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); 
     } 
    } 

} 

ответ

0

Вместо того чтобы хранить ваши кнопки в использовании Array

private var btns:Array; 

Dictionary

private var buttons:Dictionary = new Dictionary(); 

Затем добавить каждую ссылку на кнопку вместе с String, который вы хотите связать с ним

// constructor code 

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

onLoop(); 

Вы можете перебирать ключи.

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); 
    } 
} 

Вы можете получить значение с ключом

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

Спасибо вам ваш код работает как шарм. я просто знаю, существует ли другой способ заставить код работать с использованием массива –

+0

@AyoubHit Выберите инструмент в соответствии с заданием, а не наоборот. Вы можете сделать это с помощью 'Array', но это не имеет никакого смысла делать это таким образом. Не заставляйте решение с проблемой «Массив» на проблему. Лучше всего было бы использовать ни «Массив», ни «Словарь», а определить класс для ваших кнопок. таким образом вам не нужны структуры данных, чтобы создать связь с одной кнопки на «String», потому что каждая кнопка знала свою собственную «String». – null

+0

Спасибо большое. Я понимаю, что вы имеете в виду –