указатель flash as3 находится за пределами - PullRequest
0 голосов
/ 02 декабря 2011

Я пытаюсь удалить детей из мувиклипа при взаимодействии с пользователем, но он говорит, что «предоставленный индекс выходит за пределы» - однако, я должен что-то упустить, потому что кажется, что ничего не выходит за пределы. Это мой код:

Circle.as:

for (var i=0; i<3;i++){ //this number should be based on the number of children found in the XML
            var wedge:Wedge = new Wedge(wedgeHolderRef, i, cr,cScale);
        }

Wedge.as:

public function Wedge(wedgeHolderRef, wedgeNum:int, cr:int = 3, cScale:int = 5)  
{
    var wedge:Sprite = new Sprite();
    var wedgeClip:MovieClip = new MovieClip();
    wedgeClip.addChild(wedge);
    wedgeHolderRef.addChild(wedgeClip);
}

private function wedgeClickHandler(wedgeRef):void
{
    var wedgeChildren =  wedgeHolderRef.numChildren;
    for (var i=0; i<wedgeChildren; i++)
    {
        var wedgeClip = wedgeHolderRef.getChildAt(i);
        if (i != wedgeChildren-1){

        } else {
            deactivateCircle();
        }
    }
}

private function deactivateCircle()
{
    var wedgeChildren =  wedgeHolderRef.numChildren;
    for (var i=0; i<wedgeChildren; i++){
        //trace (i + "|" + wedgeHolderRef.getChildAt(i).wedgeNum);
        wedgeHolderRef.removeChildAt(i); //Here is where I get the error
    }
}

Ответы [ 2 ]

2 голосов
/ 02 декабря 2011

Не следует переходить от 0 к количеству детей, которое вы там сохранили, потому что i в какой-то момент превысит фактическое количество детей.Число детей уменьшается каждый раз, когда вы удаляете одного.

Вместо этого сделайте следующее:

while(wedgeHolderRef.numChildren)
{
    wedgeHolderRef.removeChildAt(0);
} 
1 голос
/ 02 декабря 2011

Пока вы удаляете детей, в вашем индексе не учитывается уменьшение количества детей.

После одной итерации numChildren падает на 1, но ваш индекс остается основанным на исходном числе детей.

while (wedgeHolderRef.numChildren > 0)
    wedgeHolderRef.removeChildAt(0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...