Движение нескольких стрелок с разными скоростями.
|
|
Игорь | Дата: Понедельник, 08 Сентября 2008, 09:04 | Сообщение # 1 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| В общем, я ,как обычно, с электронными пособиями... Ситуация: Смысл следующий: Там, где жирная П-образная стрелка, движется большая красная стрелочка. От нее, по мере ее продвижения, по "комнатам", разветвляются другие стрелки и движутся своими путями. На выходе они должны вновь войти в главную стрелку. Как согласовать их работу? Я могу готовый пример показать, но файл большой (около 2 Мб). Его бы доработать, но у меня только этот ЕХЕ-шник, и на чем его делали, неизвестно...
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
as-master | Дата: Понедельник, 08 Сентября 2008, 11:07 | Сообщение # 2 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| В твоем распоряжении ТЫСЯЧА скрипттаймеров. А тебе и десятка для твоей задачи много будет. Так вот, по достижению определенной координаты перемещающейся стрелкой срабатывает очередной скрипттаймер, запускающий движение нового объекта. Каждый объект управляется своим скриптом, запускаемым таймером с номерами от 1 до ...
Да пребудет с вами ММВ!
|
|
| |
Игорь | Дата: Понедельник, 08 Сентября 2008, 11:14 | Сообщение # 3 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Тьфу, блин, а ведь точно!!! Люди, какие есть таблетки для прочистки мозгов, а?
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
Игорь | Дата: Вторник, 09 Сентября 2008, 10:51 | Сообщение # 4 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Блин, не так все радужно... Гляньте пример - я вчера до полуночи сидел, но так и не смог сделать, чтобы по достижении стрелки определенной координаты от нее "отпочковывалась" другая... Вот, последний вариант, что удалось... Добавлено (09 Сентябрь 2008, 10:51) --------------------------------------------- Люди!!! Кто-нибуть!!!
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
Alex3A | Дата: Вторник, 09 Сентября 2008, 11:35 | Сообщение # 5 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Зачем мучать то место на котором сидишь, лучше это реализовать на флеше и вставить в проект. Quote (Игорь) Как согласовать их работу? Ну а если есть желание помучаться, можно и на билдере. Согласование не представляет большой проблемы, заведи себе переменную, которая будет а ля счетчик кадров, в зависимости от ее значения запускай тот или иной участок движения. Движение каждого елемента организуй отдельным скриптом, и запускай в зависимости от значения переменной - синхронизатора.
|
|
| |
Игорь | Дата: Вторник, 09 Сентября 2008, 12:43 | Сообщение # 6 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Alex3A, так я так и делал! Добавлено (09 Сентябрь 2008, 12:37) --------------------------------------------- Кстати, движение стрелок - это не все. там при щелчке на каждой из комнат открываются окна со схемой и описанием, где какой инструмент, станки и прочее... У меня все в эти движущие стрелки упирается, остальное проблем не представляет... Добавлено (09 Сентябрь 2008, 12:43) --------------------------------------------- Ну, вот скрипт... Что там не так??? For a=0 To 410 MoveTo("Poly","a,220,1") If (a=180) Then ScriptTimer("Timer2=Script1","1") Else End Next a
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
Сообщение отредактировал Игорь - Вторник, 09 Сентября 2008, 12:45 |
|
| |
as-master | Дата: Вторник, 09 Сентября 2008, 12:53 | Сообщение # 7 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Ну ёпамать... Игорь, вот щас не пожалею времени и сделаю тебе пример. Ведь это так просто! Вот только твой пример я смотреть не стану, сорри. Буду сразу делать свой :)
Да пребудет с вами ММВ!
|
|
| |
Игорь | Дата: Вторник, 09 Сентября 2008, 12:58 | Сообщение # 8 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Блин, я знаю, что просто... Только все равно не работает... Добавлено (09 Сентябрь 2008, 12:58) --------------------------------------------- Кстати, не забывай, что я три месяца комп в глаза не видел
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
Сообщение отредактировал Игорь - Вторник, 09 Сентября 2008, 12:58 |
|
| |
Alex3A | Дата: Вторник, 09 Сентября 2008, 13:34 | Сообщение # 9 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Разбей все движения на этапы, для кадждого участка движения свой скрипт, запуск каждого этапа происходит из главного скрипта, не забывай рефрешить, что бы дать автономность каждому движению. Алгоритм приблизительно следующий запускаем основной скрипт, который запускает первый этап движения, устанавливаем счетчик этапов, после завершения того или иного движения, счетчик изменяеться и управление передаеться основному скрипту. В основном скрипте, расположены условные операторы If Then которые в зависимости от счетчика этапов запускают те или иные скрипты перемешения, думаю излишне говорить что на том или ином этапе возможно запускать несколько перемешений, в зависимости от твоего сценария. Он тут не нужен. А так цикл как цикл, в чем проблема не вижу, возможно у тебя где то чего то срывает, в нелпе ведь написано что если в момент выполнения какого либо скрипта происходит какое либо событие и управление передаеться иному скрипту то первый прерываеться. Коль ты занялся такой тягамотиной, должен представить себе как все это работает во времени, и соответственно изгаляться. Представь себе что работа происходит в одной плоскости, и при работе одного скрипта запуск другого прерывает работу первого, для их одновременной работы необходимо организовать паралельную плоскость что делаеться коммандой рефреш. Но ту вдруг юзер клацает мышой, и скрипт в основной плоскости вылетает, мораль, основная плоскость для юзера с его мышом, все остальное должно быть паралельно.Добавлено (09 Сентябрь 2008, 13:34) --------------------------------------------- Скрипт таймеры, хорошее дело, однако если смотреть с точки зрения временной синхронизации, скрипт таймера выполняеться некое время, с периодичностью определенной таймером, если выполнение происходит в основном контексте, то существует вероятность что время действия юзера совпадет с временем выполнения скрипта, соответственно он вылетит, не брезгуйте использовать рефреш.
|
|
| |
as-master | Дата: Вторник, 09 Сентября 2008, 13:35 | Сообщение # 10 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Короче, демагогией мы все умеем заниматься :))))) А вот на практике, Игорь, всё сложнее. Пока у меня получилось так: когда объект доходит до определенного места, запускается движение другого объекта, но сам первый объект на это время останавливается. После завершения движения второго объекта первый вновь продолжает движение, затем запускает третий объект и картина повторяется. С командой MoveTo, очевидно, работать не получится. Видимо нужно все объекты двигать в цикле. Геморрой, короче. То что получилось на текущий момент, прицепляю тебе.
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Вторник, 09 Сентября 2008, 13:43 | Сообщение # 11 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Ко всему надо подходить с умом, нет ничего вредного и ничего полезного. Пример вредности рефреша, если у меня крутиться скажем, какойто скрипт, ну типа анимация - заставка, а при реакции юзера он прерываеться и начинаеться выполнение следующего, то применив рефреш мы не превем первый скрипт и он будет продолжать работу.
|
|
| |
as-master | Дата: Вторник, 09 Сентября 2008, 13:43 | Сообщение # 12 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Сделал движение ВСЕХ объектов в цикле. Рефреши везде поставил. Но!.... Всё равно при запуске движений остальных объектов движение основного на это время приостанавливается. Либо я чего-то не досмотрел, либо это такая уж особенность ММВ. Все желающие могут попробовать подправить мой проект, может быть и получится как надо. А может быть Игорь, тебя как раз и устроит такой вариант?
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Вторник, 09 Сентября 2008, 13:51 | Сообщение # 13 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Как правило, все эти премудрости для большинства народа не существенны, так как редко кто начинает строить наполеоновские планы и подходит к пределам возможностей. Даже при наличии нескольких таймеров и активности юзера редко возникают временные накладки, а когда и возникают, остаються незамеченными. Сто раз клацнул, один раз приглючило, но если поизголяться, то и скрипты могут глушить друг друга.
|
|
| |
as-master | Дата: Вторник, 09 Сентября 2008, 13:54 | Сообщение # 14 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Вобщем, я пришел к выводу, что пока не выполнится запущенный цикл перемещения, другой цикл работать не будет. То есть не удастся двигать одновременно несколько объектов. Единственный вариант, при котором это удастся сделать - организация движения ВСЕХ ОБЪЕКТОВ В ОДНОМ ЦИКЛЕ. Но это уже задачка для математиков Хотя и реальная.
Да пребудет с вами ММВ!
|
|
| |
as-master | Дата: Вторник, 09 Сентября 2008, 14:53 | Сообщение # 15 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Организовал движение всех объектов одним циклом. Я не был бы самим собой, если бы не решил эту простую в общем-то математическую задачку :) Думаю, любому, у кого есть башка, эти несложные математические (даже арифметические) выкладки будут понятны. Так что можно считать, что проблема чисто средствами ММВ решена :) Добавлено (09 Сентябрь 2008, 14:53) --------------------------------------------- Первую строку - RunScript("move") - надо убрать. Осталась от старого варианта.
Да пребудет с вами ММВ!
|
|
| |
as-master | Дата: Вторник, 09 Сентября 2008, 14:57 | Сообщение # 16 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Может возникнуть вопрос: как при таком способе организации движения регулировать скорость? Изменять значение паузы считаю не лучшим вариантом. Скорость лучше регулировать так, как показано в этом обновленном примере (четыре скорости: 1, х2, х4, х8)
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Вторник, 09 Сентября 2008, 18:14 | Сообщение # 17 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Забудьте все что я писал, билдер не обладает истинной многопоточностью, скрипт приостанавливаеться. Двигать можно только последовательно, в примере, переменная цикла i являеться счетчиком кадров, а условия в теле цикла обуславливают передвижение того или иного объекта в нужную сторону.
|
|
| |
as-master | Дата: Вторник, 09 Сентября 2008, 18:19 | Сообщение # 18 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Alex3A, чё-то я не въехал :( Я же ВСЁ СДЕЛАЛ В ОДНОМ СКРИПТЕ!!! Рабочий пример в посте номер 16. А ты зачем-то взял мой проект, переделал и откомментировал неизвестно как и зачем...
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Вторник, 09 Сентября 2008, 18:29 | Сообщение # 19 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Скорость можно менять не только шагом перемещения но и паузой, естественно до определенных пределов. Посмотрел 4-in-1NEW.mbd. И че я тут разоряюсь, as-master сделал все как полагаеться. Че то только Игорь пропал, сами себе мозги полощем.Добавлено (09 Сентябрь 2008, 18:29) ---------------------------------------------
Quote (as-master) номер 16 Сразу не отправил, че то сервер юкоса матюкался, так что последних потов не видел.
|
|
| |
as-master | Дата: Вторник, 09 Сентября 2008, 19:25 | Сообщение # 20 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (Alex3A) Посмотрел 4-in-1NEW.mbd Блин, так ты сделал независимо от меня, и практически точно так же как я!!! ВОТ ЭТО ЗДОРОВО!!! Quote (Alex3A) Че то только Игорь пропал Игорь появится завтра с утра пораньше, часиков в 5 по московскому (у них время плюс 5 по Москве, по-моему), временно у него инет тока на работе.
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Вторник, 09 Сентября 2008, 20:33 | Сообщение # 21 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote (as-master) Блин, так ты сделал независимо от меня, и практически точно так же как я!!! Да, только конструкция If (i>160 & i<361) Then прокатывает не во всех языках, If (i>160) & (i<361) Then Будет правильней, ибо 160 & 200=128 - битовая операция и все зависит от приоритетов что первым сделать сравнить или проаести операцию и.
|
|
| |
as-master | Дата: Вторник, 09 Сентября 2008, 21:36 | Сообщение # 22 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (Alex3A) конструкция If (i>160 & i<361) Then прокатывает не во всех языках, I f (i>160) & (i<361) Then Будет правильней Мда??... Я об этом не знал. Да и в хелпе об этом вроде ни слова.
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Вторник, 09 Сентября 2008, 21:57 | Сообщение # 23 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| А в билдере видимо как раз и прокатывает, просто привычка, лишние скобки не помеха, иногда в билдере пишу а:=b, но это синтаксис паскаля Quote (as-master) Да и в хелпе об этом вроде ни слова. Вроде где то я когда то видел что то про приоритеты, но не уверен.
|
|
| |
Игорь | Дата: Среда, 10 Сентября 2008, 10:34 | Сообщение # 24 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Quote (Alex3A) Че то только Игорь пропал, сами себе мозги полощем. Quote (as-master) Игорь появится завтра с утра пораньше, часиков в 5 по московскому Ну что, господа умники? Quote (as-master) Ведь это так просто! А? Скачал примеры, сейчас попробую в своем проекте реализовать. Надеюсь, получится. Скорости стрелок, прада, должны быть разные, но покумекаю - я изначально стопорился на Quote (as-master) ]Всё равно при запуске движений остальных объектов движение основного на это время приостанавливается Спасибо, когды вы подключитесь, я на своем проекте похимичу, скажу, что нового... Добавлено (10 Сентябрь 2008, 07:37) --------------------------------------------- Все равно... Под разными скоростями имелось ввиду: По жирной траектории движется стрелка - у нее одна скорость (медленно). От нее "отпочковываются" другие стрелки, которые пробегают по всем комнатам, их скорость большая, потому как на выходе они должны объединиться... Эх... Неужели правда Флеш нужно осваивать... А времени нет - до 25 числа нужно работу сдать... Добавлено (10 Сентябрь 2008, 07:59) --------------------------------------------- Гляньте вы мой проект, там движение этих стрелок показаны на рисунке... Мда, я думал, что просто, и я чего-то немного не того делаю ,а вона как все... Я изначально на скриптаймеры понадеялся, а они, собаки, вона чего вытворяют... Добавлено (10 Сентябрь 2008, 10:34) --------------------------------------------- Ну, что я могу сказать... Ничего не получается... Сейчас пытаюсь сделать схему во флеш - хоть я и первый раз с этой программой, но результаты куда удовлетворителнее...
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
Сообщение отредактировал Игорь - Среда, 10 Сентября 2008, 04:47 |
|
| |
as-master | Дата: Среда, 10 Сентября 2008, 10:52 | Сообщение # 25 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Чем смогли, тем помогли... Да и со скоростью наверное можно еще похимичить, просто уже лень :) Задачка-то в принципе нами решена, остальное за автором :)
Да пребудет с вами ММВ!
|
|
| |
Игорь | Дата: Среда, 10 Сентября 2008, 11:00 | Сообщение # 26 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Не знаю... Скорость задается в одном цикле на все четыре (в примере) объекта, а стрелки у меня еще и на 90 градусов поворачиваться должны - забыл я про это... Тем не менее Спасибо всем - у меня на очереди еще она лабораторная, там как раз это пригодится - фактически то же самое, только объектов 6 штук Так что труды ваши даром не пропали, еще раз спасибо!
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
Игорь | Дата: Среда, 10 Сентября 2008, 11:04 | Сообщение # 27 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Кстати, вот что должно в итоге было быть - что успел, и это еще половина работы (имею ввиду только схему, там еще куча всего...) На Билде этого, естественно, сделать... Ох-хохо...
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
as-master | Дата: Среда, 10 Сентября 2008, 11:04 | Сообщение # 28 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (Игорь) стрелки у меня еще и на 90 градусов поворачиваться должны Сделай их гиф-файлами - пусть себе поворачиваюццо :) Quote (Игорь) Скорость задается в одном цикле на все четыре (в примере) объекта На спор я готов сделать так, чтобы в ОДНОМ цикле скорости были РАЗНЫЕ. А так - нет :)))))
Да пребудет с вами ММВ!
|
|
| |
Игорь | Дата: Среда, 10 Сентября 2008, 11:05 | Сообщение # 29 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| флешку глянь...
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
as-master | Дата: Среда, 10 Сентября 2008, 11:09 | Сообщение # 30 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (Игорь) флешку глянь Ёёёёёёёё....... Если б я сразу знал, что нужно реализовать ТАКОЕ, даже не стал бы мучить ММВ. Ежу понятно. Проще даже гиф сделать, пусть и таких размеров - по-любому он бы много не весил благодаря большому количеству одинаковых пикселей в кадрах. Да, тут тока флеш. Кстати, быстро ты однако освоил технологию, я тож так хочу Колись давай, какую прогу поюзал.
Да пребудет с вами ММВ!
|
|
| |