Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Изменить код (http://www.flasher.ru/forum/showthread.php?t=57922)

sams_ 08.05.2004 18:22

Изменить код
 
Вот этот:

butt._x = 0;
buttwidth = butt._width+1;
num = 0;
for (var i = 0; i<10; i++) {
butt.duplicateMovieClip("butt"+num, num);
mc = this["butt"+num];
mc._x = buttwidth*i;
num++;
}
butt._visible = 0;

Цель — заставить дубликаты клипа butt загружаться последовательно, а не "все сразу".
Потыкался, не выходит чего-то.
Буду благодарен за совет.

kazakov_gin 08.05.2004 19:11

Код:

butt._x = 0;
buttwidth = butt._width+1;
num = 0;
function draw(){
if(num<10){
butt.duplicateMovieClip("butt"+num, num);
mc = this["butt"+num];
mc._x = buttwidth*i;
num++;
}
}
setInterval(draw,10);
butt._visible = 0;


sams_ 08.05.2004 20:21

Не пашет, однако.

artfla$her 09.05.2004 02:08

Во-первых, в скрипте у kazakov_gin-а приращение _x не идет, т.к. *i, а не *num. Во-вторых, скрипт все равно не пойдет, потому что использован this вместо _root. И, в-третьих, скорость в 10 миллсекунд очень уж зверская, неужто надеялся отследить появления шариков? ;) Вот работающий код (у меня работающий):

butt._x = 0;
buttwidth = butt._width+1;
num = 0;
function draws(){
if(num<10){
butt.duplicateMovieClip("butt"+num, num);
mc = _root["butt"+num];
mc._x = buttwidth*num;
num++;
}
}
setInterval(draws,10);
butt._visible = 0;

О том, что код на самом деле очень глупый, я промолчу :) Функцию с именем draw не рекомендую использовать (по-крайней мере в 2004), т.к. она уже зарезервирована.
Удачи.

kazakov_gin 09.05.2004 08:12

Сори, я даж не проверял, думал у него всё остальное правильно, ну и написал просто задержку.
Цитата:

приращение _x не идет, т.к. *i, а не *num
Ну эт я просто не заметил :rolleyes:
А время опять же от болды поставил :p

sams_ 09.05.2004 15:08

to artfla$her:

спасибо, теперь всё идёт "по плану".

P.S.: Вместе с сообщением о "глупом коде" хорошо бы вывешивать пример "умного". Я не пытаюсь выцыганить у тебя "гениальное" решение, просто этот код прекрасно справляется с поставленой задачей, а хорошему, как известно, предела нет.

artfla$her 10.05.2004 01:29

Цитата:

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

butt._x = 0;
buttsLevel = 10;
space = 10;
maxObj = 10;
createTime = 100;
countCopy = 0;
function copies(){
countCopy++;
buttName = "butt"+countCopy;
duplicateMovieClip("butt", buttName, buttsLevel+countCopy);
_root[buttName]._x = butt._x+(butt._width+space)*countCopy;
if(countCopy>maxObj){
clearInterval(butInt);
}
}
butInt = setInterval(copies,createTime)

Ведь ширина и проч. основного клипа не меняется, а пробелы и т.п. удобнее, на мой взгляд, задавать в начальных переменных, не касаясь основного кода. Хотя и это далеко не лучший вариант. :) Просто прикольнее делать собственный код "управляемым", так сказать, легко настраиваемым.

Да и вообще какая разница - главное работает ;)


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

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