在as3中向左和向右循环矢量

时间:2014-10-28 12:19:24

标签: javascript actionscript-3

嘿伙计们,我被困在这里......我有一个带有6个元素的Vector。所有元素都是初始隐藏的,然后我只显示位置3上的元素:

for (var i:int = 0; i < 6; i++) {
    randomizedTexts[i].alpha = 0;
}

var itemLookingFor = randomizedTexts[randomizedTexts.length - 3];
itemLookingFor.alpha = 1;

一切都很好,但是...我添加了两个箭头(左和右)的事件:

leftArrow.addEventListener(MouseEvent.CLICK, goLeft);
rightArrow.addEventListener(MouseEvent.CLICK, goRight);

在goLeft和goRight函数中,我需要显示位置3上的元素,如果我按左键显示randomizedArray [3] - 1直到randomizedArray [0]并且右边显示randomizedArray [3] + 1直到randomizedArray [ 5]。

我需要提一下我的数组已经洗牌了!!!

我的尝试:

private function goRight(e:MouseEvent):void 
        {
            for (var i:int = 0; i < 6; i++) {
                randomizedTexts[i].alpha = 0;
            }
            var toRight:Number = 3;
            toRight++;
            trace(toRight);
            randomizedTexts[toRight].alpha = 1;
        }

我知道每次goRight函数加入var并且右设置为3时都不好。(。

再一次,如果我不清楚......我得到了Shuffled数组,我隐藏了所有元素并从位置3的数组中显示元素,我得到了2个箭头,从数组开始向左和向右循环数组[ 3]。我试图实现的是如何循环向左和向右。谢谢:)

1 个答案:

答案 0 :(得分:1)

根据您拥有的内容,您需要更多跟踪goLeft和goRight位置的变量。您还应该创建一个单独的函数来清除所有alpha。每次调用goLeft或goRight函数时,它都会向上或向下迭代它应该定位的索引。

var leftPosition: int;
var rightPosition: int;
var centerPosition: int; // this can be used if you want your center position to be dynamic
var randomizedTexts: Array;
var itemLookingFor: Sprite;

init();

private function init() {
    centerPosition = 3;  // Change this number if you switch to something dynamic
    rightPosition = centerPosition + 1;
    leftPosition = centerPostion - 1;
    leftArrow.addEventListener(MouseEvent.CLICK, goLeft);
    rightArrow.addEventListener(MouseEvent.CLICK, goRight);
    itemLookingFor = randomizedTexts[centerPosition];
    zeroAlphas();
}

private function zeroAlphas():void {
    for (var i:int = 0; i < randomizedTexts.length; i++) {
        randomizedTexts[i].alpha = 0;
    }
}

private function goRight(e:MouseEvent):void {
    if(rightPosition < randomizedTexts.length -1) {
        randomizedTexts[rightPosition++].alpha = 1;
    }
}

private function goLeft(e:MouseEvent):void {
    if(leftPosition > 0) {
        randomizedTexts[leftPosition--].alpha = 1;
    }
}