Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
Как имитировать прогресс-бар?
toizyДата: Суббота, 07 Апреля 2007, 13:16 | Сообщение # 1
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Можно для этого использовать команду MoveObject().
Синтаксис этой команды таков:

Code
MoveObject("progress","x,y,l,k")

То есть объект "progress" переместится на позицию с координатами x,y и при этом его размер станет l по горизонтали и k по вертикали.
Для нашего случая координаты x и y всегда остаются одинаковыми, потому-что левый верхний угол прямоугольника, изображающего шкалу прогресс-бара, всегда остается на месте.
Поскольку размер объекта progress по вертикали всегда остается постоянным, то и значение k - тоже величина постоянная, то есть число.
А вот величина l должна плавно меняться и при этом команда MoveObject() должна периодически повторяться для каждого нового значения l. Естественно, для этого нужно написать скрипт, управляющий этим процессом. В частности, этот процесс можно связать с системным временем или с внутренним таймером, когда в каждую новую единицу времени изменяется величина l и выполняется команда MoveObject()

Вот один из простых способов, как всё это организовать. Создай объект Rectangle любой длины и высотой 50 точек, помести его аккурат в верхнем левом углу окна проекта и напиши такой вот скрипт в свойствах какой-нибудь кнопки, которая будет включать процесс:

Code

For l=0 To 300
MoveObject("Rectangle","0,0,l,50")
Pause("100")
Next l

Когда ты нажмешь эту кнопку, то увидишь, что прямоугольник медленно увеличивается вправо. Скорость регулируется величиной, прописанной в команде Pause().


Жизнь оказалась не такой уж и забавной, как поначалу...
 
dronetДата: Понедельник, 30 Июля 2007, 18:53 | Сообщение # 2
Любопытный
Группа: Проверенные
Сообщений: 38
Репутация: 0
Награды: 0
Статус: Offline
Народ, помогите со сценарием. Вот написал скрипт прогресс-бара через промежутки с циклами.
Но скрипт на мой взгляд - получился огромный - для такого исполнения.
Суть в том что - цикл для прогресс бара, цикл там для чего-нибуть, И снова до окончания.

Вот отрывок из скрипта и отрывок из проэкта -

Прикрепления: 96713384.zip (5.9 Kb)


Andress

Сообщение отредактировал dronet - Понедельник, 30 Июля 2007, 20:52
 
RushДата: Понедельник, 30 Июля 2007, 19:20 | Сообщение # 3
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
dronet
Не знаю, не смотрел твой скрипт, но я давно уже написал прогресс - там нет ничего сложного.
Посмотри в этом проекте - http://www.mmbuilder.ru/files/cyrconverter.zip

Добавлено (30 Июля 2007, 19:20)
---------------------------------------------

Quote (dronet)
PS: Извините другого места для файла не нашол

Прямо над кнопкой "Добавить ответ", которую ты жмешь при добавлении своего поста, есть надпись "Прикрепить файл".
 
dronetДата: Понедельник, 30 Июля 2007, 20:57 | Сообщение # 4
Любопытный
Группа: Проверенные
Сообщений: 38
Репутация: 0
Награды: 0
Статус: Offline
Да это я всё уже проходил. Хотя я в cyrconverter не понял ничего.
Вот из моего только маленький кусочек
For i=0 To 5
n=i*2
X=17+n
L=210-n
MoveObject("mask","X,ObjectY(mask),L,ObjectHeight(mask)")
Next i
** Тут промежуток(КОД) загрузка картинки!!
For i=0 To 5
n=i*2
X=27+n
L=220-n
MoveObject("mask","X,ObjectY(mask),L,ObjectHeight(mask)")
Pause("time")
Next i
** Тут промежуток(КОД) загрузка текста!!
Это только 2 пралёта. а всего их 21 вот - И какой размер УХ!!

Мне Кто нибуть поможет?


Andress

Сообщение отредактировал dronet - Вторник, 31 Июля 2007, 22:59
 
as-masterДата: Четверг, 02 Августа 2007, 10:23 | Сообщение # 5
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Проект под названием "Имитатор прогресс-бара"
уже давным-давно сделан мной и валяется на сайте
в разделе "Проекты - Отдельные узлы".

Для чего тогда нужен сайт и проекты на нем?
Прихожу потихоньку к решению - закрыть сайт.
А пока качай пример!


Да пребудет с вами ММВ!
 
dronetДата: Пятница, 03 Августа 2007, 21:40 | Сообщение # 6
Любопытный
Группа: Проверенные
Сообщений: 38
Репутация: 0
Награды: 0
Статус: Offline
"
Quote (as-master)
Проект под названием "Имитатор прогресс-бара"
уже давным-давно сделан мной и валяется на сайте

Я уже писал про это! Что это я уже знаю-видел-пробовал! На основе этого "Имитатора прогресс-бара" и зделан мой.но зделан по другому!
Что? не скачать шаблон и не посмотреть? Там же ясно зделано и написано. Поясняю- Прогресс вперёд+5 милиметров после загрузка картинки, далее прогресс ешё + 5 милиметров - загрузка текста, далее прогресс ешё + 5 милиметров - загрузка там ешё чегонибуть. Это не просто там какойнибуть прогресс отпахал своё до конца и всё.


Andress
 
as-masterДата: Суббота, 04 Августа 2007, 00:37 | Сообщение # 7
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Ну так это тоже несложно!

Просто нужно точно знать число действий, которое соответствует
100 процентам выполнения. Например - если идет копирование
файлов, то я должен знать, сколько файлов копируется. Если их,
скажем, 20, тогда я делю 100 на 20 и получаю 5 процентов выполнения
на копирование каждого файла. И в цикле, после копирования каждого
файла, сдвигаю полоску еще на 5 процентов.

Ты можешь посмотреть, как я реализовал прогресс в своей программе
Автоплей-меню для мр3-коллекций v 3.6
Там в Мастере настройки, когда выберешь копирование мр3-файлов,
прогресс будет идти строго в соответствии с числом копируемых файлов,
а не просто "имитироваться".

Думаю, что и ты догадаешься, как это реализовать в цикле.

Правда, я не рассматривал вопрос создания прогресс-бара для случаев
"5 милиметров после загрузка картинки, далее прогресс ешё + 5 милиметров -
загрузка текста, далее прогресс ешё + 5 милиметров - загрузка там ешё чегонибуть"


Да пребудет с вами ММВ!
 
RushДата: Суббота, 04 Августа 2007, 03:43 | Сообщение # 8
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
Quote (dronet)
Что? не скачать шаблон и не посмотреть? Там же ясно зделано и написано. Поясняю- Прогресс вперёд+5 милиметров после загрузка картинки, далее прогресс ешё + 5 милиметров - загрузка текста, далее прогресс ешё + 5 милиметров - загрузка там ешё чегонибуть. Это не просто там какойнибуть прогресс отпахал своё до конца и всё.

То, что ты сделал, называется полной ерундой. И ты еще думаешь, что это что-то доброе.
Все он пробовал и проходил...
Вот скрипт твой - делает один в один, он просто оптимизирован. Но все равно это прогресс не настоящий, а подделка...
Code
For i=1 To 105
   X=ObjectX(mask)+2
   L=ObjectWidth(mask)-2
   MoveObject("mask","X,ObjectY(mask),L,ObjectHeight(mask)")
   Refresh("")
   Pause("time")
   n=(INT(i/5)=i/5)
   If (n) Then
     numScript=numScript+1
     numScript$='Code'+CHAR(numScript)
     RunScript("numScript$")
   End
Next i

Все промежуточные коды ты пишешь в отдельные скрипты с названиями "Code1", "Code2" и т. д.
Можно и в один, только немного организуется по другому и все.
Но, подозреваю, что и промежуточные коды можно сильно переделать в сторону оптимизации и сильно сократить их число...

Кстати, обращаю внимание всех на конструкцию вида:

Code
n=(INT(i/5)=i/5)

Это то же самое, что i Mod 5 = 0. То есть переменная n будет TRUE через каждые 5 оборотов цикла.
 
dronetДата: Суббота, 04 Августа 2007, 22:57 | Сообщение # 9
Любопытный
Группа: Проверенные
Сообщений: 38
Репутация: 0
Награды: 0
Статус: Offline
Quote (Rush)
То, что ты сделал, называется полной ерундой
Ладно пускай ерунда, я и не говорю что это супер-пупер, Мне надо было! - я состряпал! Мне надо было то помощь (УМЕНЬШИТЬ) ты подсказал как мой скрипт можно уменьшить! Проблема решена.
И всётаки ето же не просто там полосочка дошла до конца и всё а и отоброжает на каком этапе находитса загрузка Других скриптов.


Andress
 
sloNIKДата: Понедельник, 13 Августа 2007, 01:52 | Сообщение # 10
Поднаторевший
Группа: Проверенные
Сообщений: 96
Репутация: 0
Награды: 0
Статус: Offline
Вопос такой.как добиться плавного увеличения како-го нить прямоугольника ,но не по гарезонтали,а вниз или вверх.Причём надо начинать с фиксированной точки.Напричер имеется лития W=130 H=1 Так её надо плавно увеличить вниз.Я пробовал ResizeImage() так увеличение идёт в двух направлениях,а надо в одном и в конкретном,либо вниз ,либо наобарот.

Добавлено (13 Августа 2007, 01:52)
---------------------------------------------
Всё вопрос снят с повестки дня ответ нашол.

Code
For i=1 To 50
    i=i*10
    MoveObject("Rectangle","ObjectX(Rectangle),ObjectY(Rectangle),100,1*i")
    Pause("10")
Next i


Самое главное,это всегда помнить о самом главном!
"Мы здесь не для того собрались, чтобы учить другие программы."
Автор: as-master


Сообщение отредактировал sloNIK - Понедельник, 13 Августа 2007, 01:53
 
as-masterДата: Понедельник, 13 Августа 2007, 09:57 | Сообщение # 11
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Какая разница, по горизонтали или по вертикали изменять размер? smile
Просто меняешь координату Х на координату Y. Ну еще там кое что
надо написать, если увеличивать размер по горизонтали вверх, а не вниз...


Да пребудет с вами ММВ!
 
  • Страница 1 из 1
  • 1
Поиск: