Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Почему не работает цикл? (http://www.flasher.ru/forum/showthread.php?t=145935)

Dalass13 23.10.2010 21:17

Почему не работает цикл?
 
Вернее цикл работает, но призводит действия только в конце. не знаю как объяснить

Код AS1/AS2:

j=1
while (++j <> 5) {
        duplicateMovieClip(skill1, "skill"+(j+1), j);
        _root["skill"+(j+1)]._x = 38*j+skill1._x;
        _root["skill"+(j+1)]._y = fixY;
}

В итоге появляется только MC с именем skill5, то есть последний. MC skill2, skill3 и skill4 отсутствуют. Ставил trace(j) выводил всё от 2 до 4, но всё равно не дублирует

Elidan 23.10.2010 21:32

Код AS1/AS2:

j=1
while (++j <= 5) {
        duplicateMovieClip(skill1, "skill"+(j+1), j);
        _root["skill"+(j+1)]._x = 38*j+skill1._x;
        _root["skill"+(j+1)]._y = fixY;
}

а лучше так:
Код AS1/AS2:

for(j = 1; j <= 5; j++){
        duplicateMovieClip(skill1, "skill"+(j+1), j);
        _root["skill"+(j+1)]._x = 38*j+skill1._x;
        _root["skill"+(j+1)]._y = fixY;
}


Dalass13 23.10.2010 21:34

появился MC skill6... больше ничего. trace(j) всё так же выдает всё верно

udaaff 23.10.2010 21:35

Должно дублировать.
Хотя, что такое skill1?

Dalass13 23.10.2010 21:36

но не дублирует, сам не могу понять почему

skill1 это MС, незнаю как еще ответить на этот вопрос)

Dalass13 23.10.2010 21:42

Вложений: 1
Вложение 25362

вот что выходит

ДядяВова 23.10.2010 22:55

Код AS1/AS2:

duplicateMovieClip(skill1, "skill"+(j+1), j);

;)

Код AS1/AS2:

duplicateMovieClip(skill1, "skill"+j, j);


Dalass13 23.10.2010 23:02

черт заработало.... хотите сказать что flash не может понять выражение в скобках? -____-

правда мне именно j+1 нужно было, ну да ладно) спасибо дядя Вова

кстати еще в квадратных скобках заработало тоже) извиняюсь что отнял время на такой пустяк, как сам до этого не дошел блин?


ВСЁ в общем я нашел ответы на все вопросы, спасибо за помощь.
вот код, если кому то понадобится что-нибудь типа такого

Код AS1/AS2:

fixY = 118;
k = 1;
for (i=1; i<=11; i++) {
        for (j=1; j<=5; j++) {
                k += 1;
                trace(k);
                duplicateMovieClip(skill1, "skill"+k, k);
                _root["skill"+k]._x = 38*j+skill1._x-38;
                _root["skill"+k]._y = fixY;
        }
        fixY += 38;
}


Mnilionic 24.10.2010 16:08

можно не дублировать, а из библиотеки дёргать по id 'skill'
Код AS1/AS2:

var rows = 11, cols = 5; // строки и столбцы
var x0 = 50, y0 = 50; // координаты сетки
var w = 40, h = 40; // размеры ячейки
var index = 1, i = 1, j = 1; // счётчики
do{
        if (i > cols) j++, i = 1; // переходим на следующую строку
        var mc = _root.attachMovie('skill', 'skill_' + index, index);
        mc._x = x0 + w * i;
        mc._y = y0 + h * j;
        index++, i++;
}while( index <= cols * rows)


Dalass13 24.10.2010 17:16

хм, отличное решение. не думал о таком если честно

правда сути особо не меняет)

дублирование чем-то хуже в этом плане?


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

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