С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/47: Рейтинг темы: голосов - 47, средняя оценка - 4.53
Заблокирован

Ожидание завершения анимации

16.04.2013, 14:13. Показов 9344. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть вот такая страничка:
Картинка.gif
/вставка через аттач корябит изображение, поэтому прилагаю ссылку "как есть"/

Требуется создать проверку при нажатии на кнопку типа "Если предыдущая анимация завершена -> анимировать, иначе -> break". Время анимации известно - 2sec.

Код тут:
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<!DOCTYPE HTML>
<html>  
  <head>    
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">    
    <meta charset="utf-8">    
    <title>Барсириэль был тут :)     
    </title>       
    <!--FONTS-->     
    <link href='http://fonts.googleapis.com/css?family=Lobster&subset=latin,cyrillic' 
rel='stylesheet' type='text/css'>    
    <link href='http://fonts.googleapis.com/css?family=Lobster+Two' rel='stylesheet'
 type='text/css'>    
    <!--CSS-->    
    <link rel="stylesheet" type="text/css" href="style.css"> 
    <!--scripts-->
<script>
//CHECK-->
function check(obj){
var buttons = document.getElementsByTagName("button");
for (i=0; i<buttons.length; i++) {
  if (obj.id==buttons[i].id) {
var butId = obj.id;
return butId;
    break;  
  }
}
}
 
//ANIMATION OUT-->
function aniout(butId){
if (document.getElementsByName('div'+butId)[0].className == 'aniin') {}
else {document.getElementsByClassName('aniin')[0].className = 'aniout';
     setTimeout(function() { document.getElementsByClassName('aniout')[0].className = 'hidden'; }, 1000)}     
}     
 
 
//ANIMATION IN-->
function aniin(butId){
setTimeout(function() {document.getElementsByName('div'+butId)[0].className = 'aniin';}, 500)
}
</script>
 
  </head>  
  <body>
  <div style="display: table; position: relative; margin-top: 8%;">
      <button id="but1" type="button" onclick="var butId=check(this);aniout(butId);
aniin(butId);">Кнопка 1</button>
      <button id="but2" type="button" onclick="var butId=check(this);aniout(butId);
aniin(butId);">Кнопка 2</button>
      <button id="but3" type="button" onclick="var butId=check(this);aniout(butId);
aniin(butId);">Кнопка 3</button>    
  </div>
    <div id="border-out">         
      <div name="divbut1" class="aniin"> 
         <h1>Hello, %Username1%           
          <br/> :D            
          <br/> Как дела? *_* 
         </h1>      
      </div>
      <div name="divbut2" class="hidden">
         <h1>Hello, %Username2%           
          <br/> :D            
          <br/> Ты ещё тут? -_-
         </h1>      
      </div>  
      <div name="divbut3" class="hidden">
         <h1>Hello, %Username3%           
          <br/> :D            
          <br/> Я ушёл >.<
         </h1>      
      </div>  
    </div>          
  </body>
</html>


Спасибо
Миниатюры
Ожидание завершения анимации  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.04.2013, 14:13
Ответы с готовыми решениями:

Время завершения анимации ( .animate() )
Добрый день. Делаю скрипт для автоматической прокрутки страниц сайта. По таймеру вызывается функция, запускающая down(). function down...

Ожидание ввода данных для завершения функции
Задача такая: имею панель инструментов для рисования определенных объектов, например после того как я нарисовал круг, мне нужно дать этому...

Анимация объекта, после завершения предыдущей анимации
Доброго времени суток, есть простой код который запускает анимацию: $(function(){ $('#conect_block').click(function(){...

8
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
16.04.2013, 15:54
Вроде, браузеры вольны запускать анимацию GIF'ов в любое время. Т.о. о состоянии анимации GIF'ов вообще ничего не известно, насколько я знаю.
0
Заблокирован
16.04.2013, 15:56  [ТС]
Gif это просто чтобы показать анимацию на сайте. Сама анимация сделана через css3 свойства.
Вы код посмотрели?) Там у анимируемых блоков просто меняются классы.
0
Дзен-программист
 Аватар для xenohunter
122 / 87 / 16
Регистрация: 10.04.2013
Сообщений: 253
16.04.2013, 16:07
inviter19, если анимацию запускать через JS, то можно отслеживать её состояние с помощью setTimeout. К примеру, так:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var animationIsActive = false;
 
function activate() {
 
    if (animationIsActive === false) {
 
        // включаем анимацию
        animationIsActive = true;
 
        setTimeout(function () {
            animationIsActive = false;
        }, 2000);
 
    }
    
}
1
Заблокирован
16.04.2013, 16:12  [ТС]
Да, только проблема в том, что этот способ не совсем подходит. Приведу пример - при нажатии на кнопку "1" запускается анимация. В середине анимации(т.е. через одну секунду) мы нажимаем на кнопку "2", на которую навешана своя анимация(та же самая, что и у кнопки "1"). Проверка не выполнится как надо.
0
Дзен-программист
 Аватар для xenohunter
122 / 87 / 16
Регистрация: 10.04.2013
Сообщений: 253
16.04.2013, 16:17
inviter19, поправил код немного: setTimeout тоже должен быть вложен в if, иначе каждый клик будет вызывать этот setTimeout.

Добавлено через 3 минуты
inviter19, переменную animationIsActive сделайте общей для всей анимации.
0
Заблокирован
16.04.2013, 16:25  [ТС]
xenohunter, не совсем понял Вашу мысль. Можно, пожалуйста, подробнее. Вот, например, две кнопки с анимацией:
HTML5
1
2
<button class="hidden" id="1" onclick="anim();">Button 1</button>
<button class="hidden" id="2" onclick="anim();">Button 2</button>
Вот, например, скрипт анимации:
JavaScript
1
2
3
4
function anim(){
var butt=document.getElementByTagName("butt");
butt.className = 'animation';
}
/вообще, такой скрипт будет менять классы у обеих кнопок сразу, но не в этом суть. В сообщении топика расписано как надо/
0
Дзен-программист
 Аватар для xenohunter
122 / 87 / 16
Регистрация: 10.04.2013
Сообщений: 253
16.04.2013, 16:35
inviter19, а ту функцию, что я написал, вы же не учли. Для удобства можно передавать id кнопки в функцию. Смотрите:

HTML5
1
2
<button class="hidden" id="button1" onclick="animate(this.id);">Button 1</button>
<button class="hidden" id="button2" onclick="animate(this.id);">Button 2</button>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var animationIsActive = false;
 
function animate(id) {
 
    if (animationIsActive === false) {
    
        var button = document.getElementById(id);
        button.className = 'animation';
 
        animationIsActive = true;
    
        setTimeout(function () {
            animationIsActive = false;
        }, 2000);
    
    }
    
}
А getElementByTagName правильно будет вот так: getElementsByTagName.
1
Заблокирован
16.04.2013, 16:38  [ТС]
Да, точно! Там же массив
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.04.2013, 16:38
Помогаю со студенческими работами здесь

Ожидание завершения процесса по ID
Всем доброго времени суток, подскажите пожалуйста как решается такая задача: есть ID процесса, необходимо ждать когда этот процесс...

Ожидание завершения процесса
Как дождаться завершения процесса и выполнить команду ?

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

Ожидание завершения exe
Запускаю exe файл в программе WinExec(&quot;kurc.exe&quot;, 1); Как сделать, чтобы программа дальше не выполнялась, пока не закончит работать...

Ожидание завершения процесса
Как дождаться завершения процесса и выполнить команду ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru