Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Операция с двойным циклом (http://www.flasher.ru/forum/showthread.php?t=183910)

Tetraeon 05.09.2012 01:10

Операция с двойным циклом
 
Приветствую, подскажите как можно провести операцию с двумя циклами так чтобы к каждому элементу первого массива применялись действия 2х элементов второго массива... если трейсить двойной цикл в такой форме:
Код AS3:

for (var q:int=0; q<massiveOne.length; q++)
{
        for (var w:int=0; w<massiveTwo.length; w++)
        {                                       
                trace(q, w);                                               
        }
}

В данном случае выводит к каждому эл-ту 1 массива применяется все элементы 2го массива
а нужно вот такое:
0 0
0 1
1 2
1 3
2 4
2 5

Пробовал w++ менять на Math.floor(w+=0,5) и все в таком духе.. программа зависала.

bav 05.09.2012 01:19

Код AS3:

var secondIndex:int = 0;
for (var q:int = 0; q < massiveOne.length; q++)
{
        for (var w:int = 0; w < 2 && secondIndex < massiveTwo.length; w++, secondIndex++)
        {                                       
                trace(q, secondIndex);                                               
        }
}


Tetraeon 05.09.2012 18:30

Спасибо большое, это очень поможет и в будущем.
Не подскажите, а почему при использовании двойного цикла статический массив(другого класса) ссылающийся на положение объектов на сцене перестает отслеживать положение этих объектов?
Вот в такой форме:
Код AS3:

var secondIndex:int = 0;
for (var q:int = 0; q < massiveOne.length; q++)
{
        trace(massiveOne[q].x); //Отслеживает
        for (var w:int = 0; w < 2 && secondIndex < massiveTwo.length; w++, secondIndex++)
        {                                       
                trace(massiveOne[q].x); //Не отслеживает                               
        }
}

Т.е. я не беру в счет через сколько позиций проскакивает массив, главное что отслеживание не ведется.

bav 05.09.2012 19:24

Могу предположить, что второй трейс не вызывается по причине того, что secondIndex в какой-то момент становится равным massiveTwo.length, и с этого момента тело внутреннего цикла перестает выполняться вовсе.

Tetraeon 05.09.2012 20:42

Вы оказались правы, спасибо за информацию при много вам благодарен.
Вот таким образом выкрутился:
Код AS3:

for (var q:int = 0; q < massiveOne.length; q++)
{
        if(secondIndex==massiveTwo.length)
        {
                secondIndex=0;
        }
        for (var w:int = 0; w < 2 && secondIndex < massiveTwo.length; w++, secondIndex++)
        {                                       
                trace(secondIndex, q);
        }
}



Часовой пояс GMT +4, время: 14:31.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.