Просмотр полной версии : как сделать временную задержку ?
Привет народ !
Помогите пожалуйста:
нужно чтобы по нажатию кнопки запускались например 20 мувиков (шарик,бегающий по кругу), но если делать по циклу просто через DuplicateMovie - в этом случае они одновременно запустяться и будет летать один жирный шарик (т.е. 20 друг над другом), а нужно чтобы один за другим 20 штук, скажем через 0.2 секунды последовательно друг за другом вылетали.
Наверно нужно использовать GetTimer() внутри цикла, но не знаю как.
Подскажите. Заранее спасибо.
Григорий.
Попробовал, но нифига неполучается.
Она (в смысле flash) по-прежнему пускает их 20 штук, но одновременно, игнорируя временную задержку, хотя вроде правильно пишу цикл...
посмотрите, в чем ошибка, блин ?:
on (press) {
i=1;
pause = 200;
time = getTimer();
if (i!=0 && i<=20) {
if (time + pause > getTimer()) {
setProperty ("positron", _alpha, "100");
tellTarget ("positron") {
gotoAndPlay ("injection");
}
pos_d = "positron" add n;
duplicateMovieClip ("positron", "pos_d", n);
n = Number(n)+1;
i++;
}
time = getTimer();
}
}
по нажатию на кнопку та должен тока запустить создание мувов (установить флажек). А запускать мувы должен нейкий контроллер (мувик), который проверяет таймер и количество запученных мувов и, если надо пускает еще.
Для кнопки напиши:
on(release ){
_root.attachMovie("ball", "ball0",0); //мув из библиотеки
_root.ball0._x = 150;
_root.ball0._y = 150;
_root.currentBall = 1; //флаг в 1
_root.lastTimer = getTimer(); //зачечь время
}Для контроллера напиши:
onClipEvent(enterFrame) {
if (_root.currentBall != 0 && _root.currentBall < _root.ballAmount)
{//если флаг не ноль (процес запущен) и не все
//мувывыпущенны тогдп
if (_root.lastTimer + _root.pause > getTimer()) {
//если пора пускать новый шар - пускаем
name = "ball" + _root.currentBall;
_root.ball0.duplicateMovieClip(name, _root.currentBall);
_root[name]._x = _root.ball0._x + 1*_root.currentBall;
_root[name]._y = _root.ball0._y + 1*_root.currentBall;
_root.currentBall++;
//опять засекаем время
_root.lastTimer = getTimer();
}
}
}
ясно?
Привет,
спасибо за помощь. Но у меня нифига не получается.
Сначала пытался сделать по описанному образцу, - ноль.
Затем просто скопировал и передрал твой исходный код.
Все равно ноль эмоций. Перепроверил....
Посылаю свой исходник - может взглянешь и скажешь почему не работает.
Заранее весьма благодарен.
Во-первых, для того чтобы заработала конструкция
_root.attachMovie("posy2", "posy0", 0);
нужно в Library нахать на твоем климе-позитроне правой мышкой, выбрать Linkage, там выбрать"Export this symbol" и в поле для ввода ввести posy2.
Во-вторых в Actions для кнопки исправь currrentPos на currentPos (с двумя буквами r).
В-третьих, надо повнимательней быть и не допускать таких опечаток в дальнейшем. Дерзай.
Спасибо за помощь. Опечаткв-то это ерунда. Я ее потом нашел сам и исправил - бывает. А вот насчет того что нужно делать Export Movie clip - я не знал... Теперь кажется понял что к чему. Но все же вопрос - как работает эта задержка? Скажем, если я ее значение увеличиваю - ничего не происходит. А хотелось бы чтобы дистанция между шариками увеличивалась. Т.е. чем больше значение pause, тем больше между ними расстояние. При том же количестве.
Или это нужно делать через координатное приращение ?
Попробую повозиться, но если можешь ответить - please.
А вот так просто нельзя? Ну это так, сыро, но в принципе, зачем все эти навороты с задержкой времени? И управлять расстоянием между дупликатами просто...
Координатное приращение не причем. Каждый вызов attachMovie загружает мув из библиотеки и аттачит его центром в центр целевого мува. После определенной задержки запущенный ранее мув успевает проиграть несколько фреймов. Т.е. если в нем что-то двигалось, то оно успеет переместиться на некоторое расстояние. После этого attachMovie пускает еще один такой же мув. И т.д. Таким образом, "расстояние" между мувами можно увеличить или увеличив задержку, или ускорив движение объетов в самом присоединяемом муве. По моему, первый способ предпочтительнее.
Прошу прощения за ошибочку. Там в неравенстве
if (_root.lastTimer + _root.pause > getTimer()) надо писать
if (_root.lastTimer + _root.pause < getTimer()) . Ну бывает. :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.