| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB6 > Мультфильмы |
| Автор: Coca-colchic 15.5.2004, 21:30 |
| Как делать мультфильмы в Basic? Например, я сделал рисунки в формате .bmp, как теперь их в Basic прокрутить, чтобы сделать мульт? P. s. Желательно поподробнее пожалуйста |
| Автор: chipset 16.5.2004, 20:34 |
| Фиг с ним, кодируй в jpg... BMP огромнющие Таймер просто настрой, сделай массив строк на файлы, а вот как JPG просматривать в VB я не знаю |
| Автор: Guest 16.5.2004, 20:56 |
| А можно по-подробнее что писать в таймере и что надо делать, чтобы туда засунуть музыку, звуки? |
| Автор: bankuss 17.5.2004, 15:37 |
| ерундой занимаетесь... для мультиков есть другие языки программирования, например flash или накрайняк dark basic |
| Автор: Vach 17.5.2004, 16:42 |
| Пример: http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=29885&lngWId=1 Удачи. |
| Автор: Guest 17.5.2004, 17:43 |
| А где flash скачать? Только скажите русский сайт. И flash белплатный? |
| Автор: bankuss 18.5.2004, 07:13 |
| Компакт диски с этим флэшем на каждом углу продаются Документации и книжек тоже завались. Изучай! Может Масяню-2 сделаешь |
| Автор: chipset 18.5.2004, 07:19 |
| Да.. я помню когда вращающуюся луну сделал на VB то прыгал от радости... эх... |
| Автор: Некто 18.5.2004, 07:35 | ||
А если на VB хочешь писать, то вот что надо: создаешь элементы Image (в каждом один кадр), обЪединяешь их в массив (даешь одинаковые имена), создаешь таймер с интервалом придется поиграть, чтобы выбрать самую подходящую смену кадров, а вот код:
Число 99 зависит от числа кадров. |
| Автор: Гость_виктор 22.5.2004, 12:04 |
| Как в VB делаются библиотеки с открытыми функциями или процедурами |
| Автор: cardinal 25.5.2004, 01:47 | ||||
Coca-colchic, ты почему вобще это дело в VB затеял? И почему ты тогда так испугался, когда тебе сказали, что для этого есть flash? Ну есть. Ну и что. Посмотри пример, который тебе Vach дал. Проще некуда! Лично я во flash'е ничего не соображаю, но кажется мне, что во flash'e легче чем в этом примере не будет. Может я ошибаюсь... Добавлено @ 01:48
Модератор: Пожалуйста, один топик - один вопрос. |
| Автор: ulukbek 22.9.2004, 12:02 |
| Как добавить учетную запись (почту) в Outlook Express 5 из yahoo.com |
| Автор: Desdichado 11.11.2004, 11:54 |
| Cразу скажу, что Visual Basic не подходит для создания мультфильмов, для этого надо использовать какой-нибудь другой редактор. Но иногда в программе необходимо сделать маленькое слайд шоу или еще что-нибудь, что требует смены рисунков с заданным интервалом времени, средства Visual Basic'а это позволяют. Подготовка рисунков (кадров). Для начала нарисуйте несколько рисунков (кадров) для вашего мультфильма, это можно сделать в любом графическом редакторе и сохраните их с именами 0.*, 1.*, 2.* : (*.bmp, *.gif, *jpg) Запустите Visual Basic и создайте новый проект. Визуальное проектирование. Откройте форму, выберите Image (рисунок) в панели инструментов и поместите элемент Image на форму. Нажмите на добавленный элемент Image, в панели Properties в свойство Name, впишите "imgPicture", найдите свойство Visible и установите его как False. Затем необходимо создать массив элементов Image. Нажмите на ваш элемент Image, который вы назвали, как "imgPicture". Нажмите Ctrl+C, что бы скопировать элемент Image в буфер обмена. Затем нажмите Ctrl+V. У вас на экране появится сообщение: "You already have a control named 'imgPicture'. Do you want to create a control array?" (перевод: "У вас уже есть элемент с именем 'imgPicture'. Хотите ли вы создать массив элементов?). Нажмите Yes (Да). На форму добавится еще один элемент Image с именем imgPicture и порядковым номером 1. Обратите внимание, что элемент Image, который был добавлен первым, получил номер 0. Порядковый номер элемента определяется свойством Index. В панели Properties вы можете увидеть, что свойство Index одного из элементов равно 0, а другого 1. Нажмите на элемент imgPicture(0) и в панели Properties найдите Picture, справа от этого свойства нажмите на маленькую кнопочку ":" и в открывшемся окне выберите файл с первым кадром вашего мультфильма, если вы еще не нарисовали кадры, сделайте это. Рисунок, который вы выбрали, появится в элементе imgPicture(0). То же сделайте для imgPicture(1). Для добавления новых элементов Image, щелкните по любому из уже созданных элементов (imgPicture(0) или imgPicture(1)) и нажмите Ctrl+C, а затем нажмите Ctrl+V. Создайте их столько, сколько кадров вы нарисовали, но не забывайте, что первый элемент имеет номер 0 (например, если вы создали 5 кадров, то последний элемент будет иметь номер 4). Так же не забудьте вставлять в них ваши рисунки (кадры). После этого выберите PictureBox в панели инструментов и поместите графическое окно на форму. Нажмите на только что созданное окно и в панели Properties в свойство Name, впишите "picPicture", найдите свойство AutoSize и установите его как True. Теперь на панели инструментов найдите значок Timer и дважды щелкните по нему. Элемент Timer добавится на форму. Нажмите на него и в панели Properties в свойство Name, впишите "tmrTimer". Теперь необходимо установить интервал смены рисунков. В панели Properties найдите Interval, впишите туда что-нибудь типа 100, это означает, что ваши рисунки будут меняться с интервалом в 100 миллисекунд. Пишем программный код. Откройте окно программного кода (View-Code), впишите: Dim y As Integer Вы объявили глобальную переменную y. Затем перейдите обратно на форму (View-Object) и дважды щелкните по таймеру (tmrTimer), откроется окно программного кода, введите: y = y + 1: If y = imgPicture.Count Then y = 0 picPicture.Picture = imgPicture(y).Picture Теперь каждые 100 миллисекунд переменная "y" будет увеличиваться на 1 и рисунок в picPicture будет равен рисунку imgPicture(y). Если переменная "y" достигнет значения равного номеру последнего кадра (imgPicture.Count), то мультфильм начнет проигрываться заново. Заключение. Вы закончили работу над программой теперь посмотрим на нее в действии. Нажмите F5 или щелкните на кнопку со стрелкой повернутой вправо, которая расположена на панели инструментов. Если вы все сделали правильно, программа запустится, и вы увидите, как в picPicture меняются рисунки |
| Автор: Akina 11.11.2004, 12:13 | ||
y=(y+1) MOD imgPicture.Count |
| Автор: Гость_Старуха 11.11.2004, 12:56 |
| Вот в Интернете нашла. Анимация Ура!!! Я так долго ждал этого момента! Сейчас ты научишься работать с анимацией. Как мы все знаем фильм это набор картинок, последовательно сменяющих друг друга. В VB картинки сменяться будут с помощью таймера - оно и понятно, любое движение это движение во времени. Сейчас мы сделаем мультик из девятнадцати кадров, для этого расположи двадцать объектов Image. Для удобства у первого изображения оставь стандартное имя, а у остальных с img1 до img19 и присвой каждой по последовательной картинке соответственно. Расположи на форме таймер и установиу него Interval как 1 и выключи его. Расположи на форме кнопку, по нажатии которой мы и включим наш таймер. Не буду тебя долго мучить, вот код для мультика: Dim a As Integer Private Sub Command1_Click() Timer1.Enabled = True a = 19 Command1.Visible = False End Sub Private Sub Timer1_Timer() a = a - 1 If a = 19 Then Image1.Picture = img1.Picture End If If a = 18 Then Image1.Picture = Img2.Picture End If If a = 17 Then Image1.Picture = Img3.Picture End If If a = 16 Then Image1.Picture = Img4.Picture End If If a = 15 Then Image1.Picture = Img5.Picture End If If a = 14 Then Image1.Picture = Img6.Picture End If If a = 13 Then Image1.Picture = Img7.Picture End If If a = 12 Then Image1.Picture = Img8.Picture End If If a = 11 Then Image1.Picture = img9.Picture End If If a = 10 Then Image1.Picture = img10.Picture End If If a = 9 Then Image1.Picture = img11.Picture End If If a = 8 Then Image1.Picture = img12.Picture End If If a = 7 Then Image1.Picture = img13.Picture End If If a = 6 Then Image1.Picture = img14.Picture End If If a = 5 Then Image1.Picture = img15.Picture End If If a = 4 Then Image1.Picture = img16.Picture End If If a = 3 Then Image1.Picture = img17.Picture End If If a = 2 Then Image1.Picture = img18.Picture End If If a = 1 Then Image1.Picture = img19.Picture End If If a = 1 Then a = 19 End If End Sub Никогда не используй для анимации картинки формата Jpeg (*.jpg) или прочие сжатые файлы! При распаковке получается эффект мерцания, это занимет дополнительные ресурсы процессора и памяти! Используй только "чистые" картинки (*.bmp). Запомни! Сэкономишь на размере - потеряешь в качестве, а на качестве не экономят!!! |
| Автор: korob2001 11.11.2004, 19:36 |
| Может я ошибаюсь, но помоему вместо всех этих условий If....End If гораздо разумнее воспользоваться Select Case a ..... End Select. |
| Автор: cardinal 11.11.2004, 19:38 | ||
Старуха, а не проще каждому img по индексу раздать?
Ну и таймер неплохо было бы выключить если он больше не нужен. |
| Автор: Staruha 11.11.2004, 20:54 |
| Ну вот я думаю можно тему закрывать (а тот код из обучалки ,для начинающих) |
| Автор: korob2001 11.11.2004, 22:16 |
| Меня интересует по данной теме ещё такой вопрос: Каким способом лучше всего создавать анимацию? С помощью таймера или цикла с DoEvents? У меня в одной книге написано что с циклом можно добиться большей скорости смены кадров, чем с таймером. Модератору: Извини что не создал отдельный топ для данной темы, просто вопрос вполне подходит под эту тему. |
| Автор: -Mikle- 11.11.2004, 22:41 |
| Да хоть че используй, смотря с какой скоростью тебе анимировать надо... На таймер, больше чем 40 кадров в секунду не рассчитывай... в цикле, можно и больше добиться... |
| Автор: korob2001 11.11.2004, 22:44 |
| Всё понял. Спасибо. |
| Автор: cardinal 11.11.2004, 23:47 | ||
Прямым обращением к видео карте |
| Автор: -Mikle- 12.11.2004, 00:13 | ||
И напрямую из VB, минуя всякие там DirectX'ы |
| Автор: Гость_Vladimir 17.2.2005, 12:52 |
| Кто нибудь знает как настроить Outlook Express на Yahoo.com у меня нихрена не получается что писать в строке сервера pop3 и smtp |
| Автор: cardinal 17.2.2005, 18:27 |
| Модератор: Пожалуйста, один топик - один вопрос. |
| Автор: Exception 17.2.2005, 18:31 | ||
На топик посмотри! Хренась, "Анимация"!!! При чем тут Outlook, Yahoo.com и pop3 с smtp??? Ты кажца заблудился |
| Автор: ~FoX~ 18.2.2005, 11:33 | ||||||||||
| Вот если кому интересно, я тут статейку накатал....... 2D анимация. И так приступим. Для работы нам понадобиться API функция - BitBlt. Функция BitBlt выполняет передачу битовых блоков данных о цвете, соответствующих прямоугольнику пикселей из заданного исходного контекста устройства в целевой контекст устройства. И лежит она в Gdi32.lib А вот её С прототип:
А возвращает эта функция не ноль если все прошло успешно и ноль если в чем то проблема. Жутко выглядит на первый взгляд, не правда ли? Но не пугайтесь ни чего страшного в ней нет. Переходим к практике. Первым делам создаем новый проект. И объявляем в области General нашу функцию. А объявляется она следующим образом:
Дальше мы опишем несколько глобальных переменных необходимых нам для работы:
Теперь будем рисовать А нарисуем мы несколько картинок быстрый просмотр которых даст эффект движения (как кадры в мультиках). Но этого недостаточно. Дабы на нашей картинки мы могли использовать прозрачный цвет (ну скажем что нарисовать бублик с дыркой в середине) нам необходимы маски наших картинок. Маска выглядят точно так же как и картинка, но все цвета не являющиеся цветом фона обращены в черный. Такое можно изобразить в любом граф. редакторе. И так у меня получилось 6 изображений (кадров) и соответственно 6 изображений масок. Дальше мы открываем нашу форму и устанавливаем свойство AutoRedraw в значение True. Теперь на понадобиться массив из 6 Image, в которые мы загрузим наши кадры и 6 Image, в которые мы загрузим наши маски. Внимательно следите что бы кадр и маска к этому кадру имели одинаковые индексы. Первый массив мы назовем Kadr(), а второй соответственно Msk(). Установим у всех Image свойства Visible=False, AutoRedraw=True, AutoSize=True. Теперь бросаем на форму таймер и устанавливаем свойство Interval ну например 50. И еще на понадобиться два PictureBox для вывода нашего изображения. Кстати их тоже сделаем невидимыми Visible=False. Все приготовления завершены, приступаем к кодингу: Первое что мы делаем это узнаем размер картинки которую мы будем показывать:
Теперь добавим процедуру в наш таймер.
Все готово!!! Можете пробывать запускать проект и наблюдать как у вас на форме происходит невообразимой кросаты действо называемое анимацией З.Ы.Статья не претендует на полноту изложения, она просто описывает один из вариантов воспроизведения анимации. З.З.Ы. Надеюсь она кому ни будь поможет. |
| Автор: cardinal 18.2.2005, 18:33 |
| Уже в FAQ'e http://vingrad.ru/VB-ART-002308 |
| Автор: Voldemar2004 4.4.2005, 21:14 | ||||
| Вот посмотрите: Timer.Index = 0, 2-a PictureBox в General
Добавлено @ 21:19 ПРимер взял из "Освой на примерах", Никита Культин автор книги. В качестве фоток хотел использовать свой аватарчик (Осла из Фильма), но сделал Ogg Vorbis Fish. ЧЕрт потерял у вас тут кнопку "присоединить файл" - послал бы mult.bmp c примерчиком. |
| Автор: ~FoX~ 5.4.2005, 08:06 | ||
Дякою |
| Автор: cardinal 30.6.2005, 03:24 | ||
|
| Автор: korob2001 30.6.2005, 08:53 |
| Дякою == Спасибо только наверное правильнее будет дякую, а может и нет. |
| Автор: cardinal 2.7.2005, 01:41 | ||
Voldemar2004, пожалуйста поменьше флейма...
Спасибо, буду знать... |
| Автор: Xeim 3.12.2005, 14:34 |
| Я бы тоже мультик на ВБ зделал, да лень читать всю эту ерунду. А так вобще хорошо написано. Зачот. Помню раньше делал кучу хороших мультиков. Но никто не заценил (не доходит). |
| Автор: NewSWA 11.12.2005, 05:55 |
| Весь процесс создания можно упростить, для этого в качестве анимации графики используем анимированные *.Gif файлы, а модулей для их проигрывания в нете давольно много. Проблему составляет, как мне кажется, только звук |
| Автор: KEKCCCP 25.12.2005, 17:51 |
| Desdichado, "%?%?№ писать тут болтовни столько... ! |
| Автор: cardinal 26.12.2005, 17:07 |
| Модератор: KEKCCCP, думай в след. раз, что говоришь! |