Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
3 / 3 / 0
Регистрация: 02.11.2013
Сообщений: 169

Как сделать паузу в анимации?

19.01.2016, 00:17. Показов 2752. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проигрывается определенная анимация в цикле. Как сделать паузу в этой анимации.
Сделать кнопку, привязать к ней событие. Какое событие можно привязать?
Главное не просто паузу, можно елементарной остановкой цикла это сделать, но потом еще и запустить. Помним что запускать нужно из процедуры.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.01.2016, 00:17
Ответы с готовыми решениями:

Как убрать паузу между исполнением одной и той же анимации, @keyframes
Хочу, что бы у меня при наведении на кнопку стрелочка крутилась в infinity, но она почему то делает паузу между повторами одной и той же...

Как сделать паузу?
Как сделать что-бы када высвечивалось надпись окно закрывалось ТОЛЬКО если нажал какую-то клавишу а не сразу? Подскажите оператор плз! ...

Как сделать паузу в таймере
Подскажите, пожалуйста, как описать функцию паузы в таймере. У меня идет процесс игры на время. И мне необходимо добавить кнопку паузы....

7
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
19.01.2016, 07:13
Цитата Сообщение от Akvalar Посмотреть сообщение
Как сделать паузу в этой анимации.
Сделать кнопку, привязать к ней событие.
Хоть кнопку, хоть по клавише останавливать и включать таймер.
0
3 / 3 / 0
Регистрация: 02.11.2013
Сообщений: 169
19.01.2016, 21:50  [ТС]
Ну не понял как? Можно на конкретном примере? И какими командами?
Я тут сделал видимо каким то кривым способом, но после выхода запустить никак не получается. А других способов не знаю. Подчеркнул в коде: if Q = 1 then exit;
Pascal
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
uses
  GraphABC, ABCObjects;
 
label b;
var
  buton: RectangleABC;
  
  C1, C2: ContainerABC;
  x1, x2, x01, x02, y01, y02, v1, v2, t, q: integer;
 
procedure MyMouseDown(x, y, mb: integer);
 
begin
  var ob := ObjectUnderPoint(x, y);
  if (ob <> nil) and (ob is RectangleABC) then 
    Q := 1                                         
  else begin
    q := 0; 
  end;
end;
    /// Рисует точку с координатами х,у, радиусом r, подписывает
    /// ее сверху строчкой S,и присваевает ее контейнеру С1.
procedure po(S: string; x, y, r: integer; var C1: ContainerABC);
 
var
  A: TextABC;
  c: CircleABC;
begin
  c1 := new ContainerABC(x, y);
  A := new TextABC(0, 10, 14, S);
  c := new CircleABC(5, 30, r, clBlue);
  C1.Add(A);
  C1.Add(C);
end;
 
procedure setka(x, h: integer);
var
  h1: integer;
begin
  SetPenColor(clCadetBlue);
  //Горизонтальные линии
  while h1 < WindowHeight do 
  begin
    h1 += h;                         
    Line(0, -20 + h1, GraphABC.WindowWidth, -20 + h1);
  end;
  h1 := 0;
  // Вертикальные линии
  while h1 < WindowWidth do 
  begin
    h1 += h;                      
    Line(h1, 0, h1, GraphABC.WindowHeight);
    TextOut(h1, x + 5, h1);
  end;
  
  SetPenWidth(3);
  Line(0, x, GraphABC.WindowWidth, x); // жирная линия
end;
 
begin
  SetWindowSize(1200, 600);
  SetWindowPos(0, 0);
  setka(180, 100);
  x01 := 10;
  x02 := 1100;
  y01 := 150;
  y02 := 150;
  v1 := 2;
  v2 := -4;
  x1 := x01;
  x2 := x02;
  po('A', x01, y01, 5, c1);
  po('B', x02, y02, 5, c2);
  buton := new RectangleABC(500, 500, 300, 50, clAzure);
  buton.Text := 'Стоп!';
  OnMouseDown := MyMouseDown;
  b:   
  while x1 < x2 do 
  begin
//--------------------
if Q = 1 then exit;
//---------------------
    t += 1;
    x1 := x01 + v1 * t; //Формула расчета координаты автомобиля 1.
    x2 := x02 + v2 * t; //Формула расчета координаты автомобиля 2.
    C1.MoveTo(x1, y01);
    C2.MoveTo(x2, y02);
    Sleep(10);
  end;
end.
Добавлено через 10 часов 43 минуты
Вот я читаю про таймер - ничего понять не могу. Документация крайне скудная, примеров всего 2. Ткните пальцем пожалуйста, как сделать?
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
19.01.2016, 23:02
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

я тебе, наверное, медвежью услугу сейчас окажу, т.к. вместо того, чтобы написать с нуля правильный код, я твой подправил, чтобы он делал то, что тебе надо.
Это, конечно, неверно. Зато быстро!

если по твоему, то можно так:
Pascal
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
uses
  GraphABC, ABCObjects;
 
var
  buton: RectangleABC;
  
  C1, C2: ContainerABC;
  y01, y02, t, q: integer;
  x1, x2, x01, x02, v1, v2 : real;
 
procedure MyMouseDown(x, y, mb: integer);
begin
  var ob := ObjectUnderPoint(x, y);
  if (ob <> nil) and (ob is RectangleABC) then  begin
    if Q=0 then begin
      Q:=1; buton.Text := 'Продолжить!';
    end
    else begin
      Q:=0; buton.Text := 'Стоп!';
    end;
    
  end;
end;
    /// Рисует точку с координатами х,у, радиусом r, подписывает
    /// ее сверху строчкой S,и присваевает ее контейнеру С1.
procedure po(S: string; x, y, r: integer; var C1: ContainerABC);
 
var
  A: TextABC;
  c: CircleABC;
begin
  c1 := new ContainerABC(x, y);
  A := new TextABC(0, 10, 14, S);
  c := new CircleABC(5, 30, r, clBlue);
  C1.Add(A);
  C1.Add(C);
end;
 
procedure setka(x, h: integer);
var
  h1: integer;
begin
  SetPenColor(clCadetBlue);
  //Горизонтальные линии
  while h1 < WindowHeight do 
  begin
    h1 += h;                         
    Line(0, -20 + h1, GraphABC.WindowWidth, -20 + h1);
  end;
  h1 := 0;
  // Вертикальные линии
  while h1 < WindowWidth do 
  begin
    h1 += h;                      
    Line(h1, 0, h1, GraphABC.WindowHeight);
    TextOut(h1, x + 5, h1);
  end;
  
  SetPenWidth(3);
  Line(0, x, GraphABC.WindowWidth, x); // жирная линия
end;
 
begin
  SetWindowSize(1200, 600);
  SetWindowPos(0, 0);
  setka(180, 100);
  x01 := 10;
  x02 := 1100;
  y01 := 150;
  y02 := 150;
  v1 := 2/10;
  v2 := -4/10;
  x1 := x01;
  x2 := x02;
  po('A', round(x01), y01, 5, c1);
  po('B', round(x02), y02, 5, c2);
  buton := new RectangleABC(500, 500, 300, 50, clAzure);
  buton.Text := 'Стоп!';
  q:=0;
  OnMouseDown := MyMouseDown;
  
  while x1 < x2 do 
  begin
    if Q = 0 then begin
      t += 1;
      x1 := x01 + v1 * t; //Формула расчета координаты автомобиля 1.
      x2 := x02 + v2 * t; //Формула расчета координаты автомобиля 2.
      C1.MoveTo(round(x1), y01);
      C2.MoveTo(round(x2), y02);
    end;  
    Sleep(10);
  end;
end.
Добавлено через 1 минуту
я эти переменные сделал типом real
Цитата Сообщение от Sergio Leone Посмотреть сообщение
Pascal
1
x1, x2, x01, x02, v1, v2 : real;
чтобы скорость замедлить. А то у тебя скорость сближения бешенная, глазом моргнуть не успеваешь, как уже цикл закончился!
2
3 / 3 / 0
Регистрация: 02.11.2013
Сообщений: 169
19.01.2016, 23:43  [ТС]
Это, конечно, неверно. Зато быстро!
А как тогда будет верно? Какой принцып?)
Идею все равно понял, спасибо, давай вебмани кошелек, скажу спасибо в материальной форме :-)
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
19.01.2016, 23:55
Цитата Сообщение от Akvalar Посмотреть сообщение
cпасибо, давай вебмани кошелек, скажу спасибо в материальной форме :-)
спасибо, это того не стоит!

Цитата Сообщение от Akvalar Посмотреть сообщение
А как тогда будет верно? Какой принцып?)
- button'у нужно назначить обработчик Click (у тебя слишком сложно, через Mouse сделано и проверяешь, куда щёлкнул)
- а двигать автомобили нужно по таймеру. Тогда и пустого цикла не будет - на кнопке достаточно таймер остановить, тогда автомбили перестанут двигаться, а запустишь таймер, продолжат движение.
Код тогда получится и проще и наглядней.
2
3 / 3 / 0
Регистрация: 02.11.2013
Сообщений: 169
20.01.2016, 17:21  [ТС]
Цитата Сообщение от Sergio Leone Посмотреть сообщение
button'у нужно назначить обработчик Click (у тебя слишком сложно, через Mouse сделано и проверяешь, куда щёлкнул)
- а двигать автомобили нужно по таймеру. Тогда и пустого цикла не будет - на кнопке достаточно таймер остановить, тогда автомбили перестанут двигаться, а запустишь таймер, продолжат движение.
Код тогда получится и проще и наглядней.
Похоже без вебмани все таки не обойтись. Что то я так и не понял как таймер работает, хоть и смотрел примеры. В доках на него крайне мало вообще написано - не разобрался. Да и с батанами еще не работал вплотную (только начал изучать) - обработчика Click не вижу. Напиши мне код пожалуйста - как это выглядеть будет, а тебе хоть 100р скину. Мне не жалко, а тебе приятно будет.
0
23.01.2016, 00:32

Не по теме:

Akvalar, в тематическом разделе помощь оказывается безвозмездно. Правила форума перечитайте. Желаете сделать за деньжыщи - по Вашей просьбе тема может быть перенесена в раздел фриланса.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.01.2016, 00:32
Помогаю со студенческими работами здесь

Как сделать паузу в программе?
Здравствуйте! Помогите плиз! Как сделать в проге паузу? Программа-тест, юзер выбирает вариант ответа, нажимает на кнопку Дальше, на...

Как сделать видео на паузу?
Приветствую форумчане, подскажите пожалуйста, как сделать чтобы видео ставило паузу при прокрутке страницы?

Как сделать рандомную паузу?
using System.Collections; using System.Collections.Generic; using UnityEngine; public class killer1 : MonoBehaviour { public...

Как сделать паузу игры
Код игры (function(elid, width, height, speed, strength){ var canvas = document.querySelector(elid), ctx =...

Как сделать паузу в ASP скрипте?
Как сделать паузу в скрипте? Аналог WScript.Sleep(100). Т.е. не какой-то цикл, который жрет 100% CPU time, а именно работа...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru