Как имитировать прогресс-бар?
|
|
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
| Народ, помогите со сценарием. Вот написал скрипт прогресс-бара через промежутки с циклами. Но скрипт на мой взгляд - получился огромный - для такого исполнения. Суть в том что - цикл для прогресс бара, цикл там для чего-нибуть, И снова до окончания. Вот отрывок из скрипта и отрывок из проэкта -
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" и т. д. Можно и в один, только немного организуется по другому и все. Но, подозреваю, что и промежуточные коды можно сильно переделать в сторону оптимизации и сильно сократить их число... Кстати, обращаю внимание всех на конструкцию вида: Это то же самое, что 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
| Какая разница, по горизонтали или по вертикали изменять размер? Просто меняешь координату Х на координату Y. Ну еще там кое что надо написать, если увеличивать размер по горизонтали вверх, а не вниз...
Да пребудет с вами ММВ!
|
|
| |