2015-02-14 3 views
0

У меня есть массив с мувиклипами, которые я размещаю на сцене. Я хочу использовать клавиши со стрелками клавиатуры для изменения альфы каждого мувиклипа отдельно, как если бы вы проходили через них (я надеюсь, что это имеет смысл). До сих пор я могу только выделить их все сразу, используя стрелку ВВЕРХ/ВНИЗ. Моя цель состоит в том, чтобы прокрутить их с помощью подсветки и downlight, используя свойство alpha.AS3 с помощью клавиш со стрелками для выделения movieclips

Это мой код:

импорт flash.events.KeyboardEvent; импорт flash.events.Event;

var num1: Number = 262; var aantal: Number = 8;

function Main() { 

    var BTN_arr: Array = new Array(); 
    var houder: Number = 1; 
    var aantal2: uint = BTN_arr.length; 
    var nextBTN: uint; 
    var currentBTN: uint; 


    for (var i = 0; i < aantal; i++) { 
     var myBTN: BTNBg = new BTNBg(); 
     myBTN.name = "btn" + i; 
     BTN_arr.push(myBTN); 
     addChild(myBTN); 
     myBTN.alpha = .45; 
     myBTN.x = 40; 
     myBTN.y = num1; 
     num1 += 90; 
    } 

    BTN_arr[0].alpha = 1; 


    stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown); 


    function myKeyDown(e: KeyboardEvent): void { 

     if (e.keyCode == Keyboard.DOWN) { 

      for (var i = 0; i < BTN_arr.length; i++) { 
       BTN_arr[i].alpha = 1; 

      } 

     } 



     trace("down"); 


     if (e.keyCode == Keyboard.UP) { 

      for (var j = 0; j < BTN_arr.length; j++) { 
       BTN_arr[j].alpha = .45; 
      } 

      trace("up"); 
      //MyBTN.alpha = 1; 


     } 
    } 
} 

Main(); 

ответ

0
var position:int = 0; 

function updateHighlight() : void{ 
    BTN_arr[position].alpha = 1; //highlight new one 
} 

function myKeyDown(e: KeyboardEvent): void { 

    if (e.keyCode == Keyboard.DOWN) { 
     trace("down"); 
     if(position > 0){ 
      BTN_arr[position].alpha = .45; //unhighlight current 
      position--; 
      updateHighlight(); 
     } 
    } 

    if (e.keyCode == Keyboard.UP) { 
     trace("up"); 
     if(position < BTN_arr.length - 1){ //is not the last one 
      BTN_arr[position].alpha = .45; //unhighlight current 
      position++; 
      updateHighlight(); 
     } 
    } 
} 
0

Чтобы сделать то, что вы хотите, вы не нужно использовать for петлю каждый раз, чтобы установить кнопки альфы, так что вы можете использовать вар, чтобы установить текущую кнопку и установить альфа только это, как это:

var current_button:int = 0; 
var sens:int = 0; // -1 : up, 1 : down 

stage.addEventListener(Event.ENTER_FRAME, _onEnterFrame) 
function _onEnterFrame(e:Event):void { 
    if(sens != 0){ 

     BTN_arr[current_button].alpha = .45; 

     if(0 <= current_button + sens && current_button + sens < BTN_arr.length) current_button += sens; 

     // if you want to pass from the last button to the first one and vice versa, you can enable these 3 lines and disable the 1st if 
     //current_button += sens; 
     //if(current_button < 0) current_button = BTN_arr.length - 1; 
     //else if(current_button >= BTN_arr.length) current_button = 0; 

     BTN_arr[current_button].alpha = 1; 

     sens = 0; 
    } 
} 

stage.addEventListener(KeyboardEvent.KEY_DOWN, _onKeyDown); 
function _onKeyDown(e: KeyboardEvent): void { 
    if (e.keyCode == Keyboard.DOWN) { 
     sens = 1; 
    } else if (e.keyCode == Keyboard.UP) { 
     sens = -1; 
    } 
} 

Который даст вам что-то вроде this, и как this для 2-го корпуса (с 3 комментировал линии включен).

Надеюсь, что это поможет.