Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
1

Реализовать движущийся фон

24.04.2014, 22:29. Показов 4293. Ответов 56
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как это проще всего оформить в VB6? Менять координаты длиннющей картинки и перерисовывать ее чтобы создавалось ощущение движения, или есть способы получше?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2014, 22:29
Ответы с готовыми решениями:

Движущийся автомобиль)))
Здравствуйте...помогите пожалуйста составить алгоритм программы с анимацией. В общем задание: нам...

Как создать движущийся шарик
Разработка программы движения шарика в окне с отражением от стенок по законам геометрической...

Движущийся фон блока js
Добрый день, уважаемые форумчане ! Подскажите начинающему как реализовать вот такое...

Динамичный движущийся фон
Доброго времени суток! Может кто знает каким образом реализован фон в одноклассниках - фон когда...

56
Модератор
9724 / 3685 / 871
Регистрация: 22.02.2013
Сообщений: 5,530
Записей в блоге: 78
25.04.2014, 09:58 41
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от aptos Посмотреть сообщение
DirectX8 чтоли устанавливать надо?
Нужна ActiveX библиотека dx8vb.dll
0
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
25.04.2014, 10:14  [ТС] 42
Цитата Сообщение от The trick Посмотреть сообщение
Нужна ActiveX библиотека dx8vb.dll
Жаль плюсики закончились. Спасибо)

Добавлено через 2 минуты
Ту строку пропустил, теперь тут ругается:

Visual Basic
1
Set dinput = dx8.DirectInputCreate()
"Active X component cannot create object"

Добавлено через 9 минут
В общем думаю установлю Microsoft DirectX 8.1 SDK for Visual Basic, а потом уже буду с ошибками разбираться. Наверно из-за этого все.
0
Модератор
9724 / 3685 / 871
Регистрация: 22.02.2013
Сообщений: 5,530
Записей в блоге: 78
25.04.2014, 10:16 43
Цитата Сообщение от aptos Посмотреть сообщение
"Active X component cannot create object"
Библиотека зарегистрирована?
0
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
25.04.2014, 13:19  [ТС] 44
Цитата Сообщение от The trick Посмотреть сообщение
Библиотека зарегистрирована?
А точно, через cmd.exe ведь регестрировать надо...

Добавлено через 2 часа 35 минут
Visual Basic
1
  Set d3d = dx8.Direct3DCreate
Это инициализация переменной d3d... Можно узнать подробнее назначение Set? Инициализация? Если да, то что еще можно инициализировать.

Не по теме:

Только не отправлять на MSDN :)

0
Модератор
9724 / 3685 / 871
Регистрация: 22.02.2013
Сообщений: 5,530
Записей в блоге: 78
25.04.2014, 13:25 45
Цитата Сообщение от aptos Посмотреть сообщение
Это инициализация переменной d3d... Можно узнать подробнее назначение Set? Инициализация? Если да, то что еще можно инициализировать.
Set - это присвоить одной объектной переменной ссылку на другую. Т.к. в VB есть такое понятие как свойство по умолчанию мы не можем просто сделать d3d = dx8.Direct3DCreate (в разных случаях по разному)б потому что это будет эквивалентно присвоению свойств объектов по умолчанию. В твоем примере ты создаешь новый объект посредством dx8.Direct3DCreate и присваиваешь его переменной d3d. Так же ты можешь потом написать Set d3d2 = d3d, и уже две переменные будут ссылаться на один и тот же объект.
0
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
25.04.2014, 13:39  [ТС] 46
Цитата Сообщение от The trick Посмотреть сообщение
Set - это присвоить одной объектной переменной ссылку на другую. Т.к. в VB есть такое понятие как свойство по умолчанию мы не можем просто сделать d3d = dx8.Direct3DCreate (в разных случаях по разному)б потому что это будет эквивалентно присвоению свойств объектов по умолчанию. В твоем примере ты создаешь новый объект посредством dx8.Direct3DCreate и присваиваешь его переменной d3d. Так же ты можешь потом написать Set d3d2 = d3d, и уже две переменные будут ссылаться на один и тот же объект.
Т.е. объект создается независимо от переменных, а уже переменные получают только ссылку на него? Вроде как, d3d2 ссылается на d3d, а d3d ссылается dx8.Direct3DCreate? Или я что-то не так понял.

Ой, наверно у обоих переменных один и тот же адрес будет...

Добавлено через 9 минут
Ну это несущественно, вот вопрос назрел. Что именно создает Direct3DCreate? В книге как-то этот момент обошли. Видно что-то Direct и 3D, но суть непонятна
0
Модератор
9724 / 3685 / 871
Регистрация: 22.02.2013
Сообщений: 5,530
Записей в блоге: 78
25.04.2014, 13:53 47
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Есть понятие кокласса, интерфейса. В VB6 классы являются коклассами. Грубо говря это такие которые могут создавать объект на своей основе. Примеры коклассов (Collection, StdFont). Создание объекта происходит при обращении к DAN ссылке или при явном создании Set Obj = New Class. Все объектные переменные являются указателями на указатели на интерфейс объектов. Сами данные объекты хранятся произвольно (в разных классах). Каждый объект хранит число ссылок на себя, как это число равно нулю, так объект уничтожается. Это очень большая тема и кроме как отправить тебя в MSDN я не могу, т.к. писать очень много.
Цитата Сообщение от aptos Посмотреть сообщение
Т.е. объект создается независимо от переменных, а уже переменные получают только ссылку на него? Вроде как, d3d2 ссылается на d3d, а d3d ссылается dx8.Direct3DCreate? Или я что-то не так понял.
Нет. Упрощенно dx8.Direct3DCreate создает объект и присваивает его переменной d3d, поэтому счетчик увеличивается на 1 и становится равен 1-му. Потом присваивая второй переменной счетчик еще увеличивается на 1 и становится равным 2. После выхода из области видимости функции, каждой переменной присваивается Nothing и счетчик также уменьшается и становится равным 0, поэтому объект уничтожается. Объект получается зависим от переменных.
Цитата Сообщение от aptos Посмотреть сообщение
Ой, наверно у обоих переменных один и тот же адрес будет...
Нет. Адреса будут разными, а вот значения по этим адресам одинаковые.
Вот небольшое описание VB классов Вызов любых функций по указателю

Добавлено через 3 минуты
Цитата Сообщение от aptos Посмотреть сообщение
Direct3DCreate
Создает устройство вывода. С помощью него ты будешь "рисовать" объекты, накладывать текстуры, свет и т.п.
0
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
25.04.2014, 14:55  [ТС] 48
Я вернулся...

Не по теме:

Переловлю работников ЖКХ свет включили...



Как всегда спасибо, мне бы преподавателя такого в универ... Все знаете.
Пока света не было и батарея на ноуте была жива, еще появились вопросы, не совсем именно по DirectX.

Насколько понял из MSDN (если правильно перевел), DoEvents возвращает значение, равное количеству открытых форм. Зачем он тут:

Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Form_Load()
Me.Show
D3DInit
Running = True
   Do While Running
   DoEvents
   Render
   Loop
Unload Me
End Sub
И еще, когда происходит событие Form_QueryUnload?

И вот:
Visual Basic
1
2
3
4
5
6
7
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If Running Then
Cancel = 1: Running = False
Else
ClearAll
End If
End Sub
Двоеточие в If это как запятая, можно действия перечислять которые в нем произойти должны?

Извиняюсь за назойливость

Добавлено через 2 минуты
Цитата Сообщение от The trick Посмотреть сообщение
Вот небольшое описание VB классов Вызов любых функций по указателю
Тут пока для меня слишком много непонятного, к этому позже немного вернусь

Добавлено через 4 минуты
интерфейс IDispatch...
реверс-инжиниринг...
наследует IUnknown...

Как обычно ==>
0
Модератор
9724 / 3685 / 871
Регистрация: 22.02.2013
Сообщений: 5,530
Записей в блоге: 78
25.04.2014, 14:56 49
Цитата Сообщение от aptos Посмотреть сообщение
DoEvents возвращает значение, равное количеству открытых форм. Зачем он тут:
Функция DoEvents выполняет обработку сообщений находящихся в очереди. Если убрать DoEvents то приложение не будет отвечать и зависнет.
Цитата Сообщение от aptos Посмотреть сообщение
И еще, когда происходит событие Form_QueryUnload?
http://visualprogs.ru/all/6.html
Цитата Сообщение от aptos Посмотреть сообщение
Двоеточие в If это как запятая, можно действия перечислять которые в нем произойти должны?
Двоеточие эквивалентно переводу на новую строку.
0
Заблокирован
25.04.2014, 14:59 50
Цитата Сообщение от aptos Посмотреть сообщение
Насколько понял из MSDN (если правильно перевел), DoEvents возвращает значение, равное количеству открытых форм. Зачем он тут:
DoEvents включает реакцию на события !

Добавлено через 2 минуты
Тоесть если использовать какой-либо безконечный цикл надо делать так
Visual Basic
1
2
3
Do
    DoEvents
Loop
безконечный цикл, но при этом продолжает реагировать на нажатия кнопок и мышок
иначе программа зависнет
0
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
25.04.2014, 15:03  [ТС] 51
Цитата Сообщение от The trick Посмотреть сообщение
Функция DoEvents выполняет обработку сообщений находящихся в очереди. Если убрать DoEvents то приложение не будет отвечать и зависнет.http://visualprogs.ru/all/6.htmlДвоеточие эквивалентно переводу на новую строку.
Ха, и правда зависло

Уже несколько раз от вас слышу "сообщение"... Это ведь не MsgBox, правда? Дайте хоть на MSDN ссылку, а то гугл на "сообщения в VB6" ничего путного не выдает

Добавлено через 38 секунд
Цитата Сообщение от FelixMacintosh Посмотреть сообщение
DoEvents включает реакцию на события !

Добавлено через 2 минуты
Тоесть если использовать какой-либо безконечный цикл надо делать так
Visual Basic
1
2
3
Do
    DoEvents
Loop
безконечный цикл, но при этом продолжает реагировать на нажатия кнопок и мышок
иначе программа зависнет
Аааа, теперь понял, спасибо!

Не по теме:

Бесконечный :p

0
Заблокирован
25.04.2014, 15:07 52
Цитата Сообщение от aptos Посмотреть сообщение
Аааа, теперь понял, спасибо!
я кстате дословно перевел, воспользовавшись яндекс-переводчиком ...Do Events = Неужели События
0
Модератор
9724 / 3685 / 871
Регистрация: 22.02.2013
Сообщений: 5,530
Записей в блоге: 78
25.04.2014, 15:15 53
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Кстати DoEvents довольно медленная функция, к тому же ее обычно используют не как функцию а как процедуру. Можно многократно ускорить
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Option Explicit
 
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As Any, ByVal hwnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
Private Declare Function TranslateMessage Lib "user32" (lpMsg As Any) As Long
Private Declare Function DispatchMessage Lib "user32" Alias "DispatchMessageA" (lpMsg As Any) As Long
 
Private Sub Command1_Click()
    Dim Msg(6) As Long
    
    Do
        ' Fast DoEvents
        Do While PeekMessage(Msg(0), 0, 0, 0, 1)
            TranslateMessage Msg(0): DispatchMessage Msg(0)
        Loop
    Loop
End Sub
1
Антихакер32
25.04.2014, 15:16
  #54

Не по теме:

Хотелось бы добавить что сервисы яндекса точнее переводят и правильнее чем сервисы гугла

0
Модератор
9724 / 3685 / 871
Регистрация: 22.02.2013
Сообщений: 5,530
Записей в блоге: 78
25.04.2014, 15:16 55
Цитата Сообщение от aptos Посмотреть сообщение
Уже несколько раз от вас слышу "сообщение"...
Давай на "ты".
Цитата Сообщение от aptos Посмотреть сообщение
Дайте хоть на MSDN ссылку, а то гугл на "сообщения в VB6" ничего путного не выдает
http://vsokovikov.narod.ru/New... ssages.htm
1
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
25.04.2014, 18:29  [ТС] 56

Не по теме:

Цитата Сообщение от FelixMacintosh Посмотреть сообщение
я кстате дословно перевел, воспользовавшись яндекс-переводчиком ...Do Events = Неужели События
Я вроде со школы помню, что Do - это делать... Гугл так же думает кстати - "сделать события" мне перевел :)
Может когда вводил что переводить ошибся?

Если не ошибся, то да, точность яндекса на высоте :D



Добавлено через 1 минуту
Цитата Сообщение от The trick Посмотреть сообщение
Давай на "ты".
Оки

Цитата Сообщение от The trick Посмотреть сообщение
http://vsokovikov.narod.ru/New_MSDN_...s_messages.htm
Спасибо!

Т.е. сообщения - это реакция VB6 на какие-то изменения(события)?
0
Заблокирован
25.04.2014, 19:18 57
Цитата Сообщение от aptos Посмотреть сообщение
да, точность яндекса на высоте
потому что гугл делали американские русофобы
а яндекс лицом к нам )

Добавлено через 39 минут
Цитата Сообщение от aptos Посмотреть сообщение
Т.е. сообщения - это реакция VB6 на какие-то изменения
Сообщения... Это основная форма общения между всеми объектами в операционной системе

Добавлено через 48 секунд
поэтому они в очередях ...
1
25.04.2014, 19:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2014, 19:18
Помогаю со студенческими работами здесь

Реализовать движущийся графический объект с помощью статических и динамических объектов
Добрый день. Решаю задачу из методички и поставлена она следующим образом: используя технологию...

Реализовать двухцветный фон
Здравствуйте. Прошу мне помочь. Есть например у нас дом какой-то на экране.(нарисованный в...

CSS, реализовать представленный фон
CSS, реализовать представленный фон

[SFML] Как реализовать прозрачный фон?
Работаю, в VS , пишу на C++, помогите пожалуйста сделать так, чтобы после проигрыша, было видно...


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

Или воспользуйтесь поиском по форуму:
57
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru