Reputation: 1
I have an array with movieclips that I place on the stage. I want to use the keyboard arrow keys to change alpha of each movieclip separately, as if you are navigating trough them ( I hope this makes sence). So far I can only highlight them all at once using the UP/DOWN arrow.My goal is to loop trough them with highlight and downlight using alpha property.
This is my code:
import flash.events.KeyboardEvent; import 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();
Upvotes: 0
Views: 106
Reputation: 9839
To do what you want, you don't need to use a for
loop every time to set buttons alphas, so you can use a var to set the current button and you set alpha just to it, like this :
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;
}
}
Which will give you something like this, and like this for the 2nd case (with 3 commented lines enabled).
Hope that can help.
Upvotes: 0
Reputation: 971
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();
}
}
}
Upvotes: 0