Аватар для aptos
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156

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

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

Студворк — интернет-сервис помощи студентам
Как это проще всего оформить в VB6? Менять координаты длиннющей картинки и перерисовывать ее чтобы создавалось ощущение движения, или есть способы получше?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.04.2014, 22:29
Ответы с готовыми решениями:

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

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

Движущийся фон блока js
Добрый день, уважаемые форумчане ! Подскажите начинающему как реализовать вот такое demo.bonefishcode.com/bone/file/single.html ? ...

56
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
25.04.2014, 09:58
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от aptos Посмотреть сообщение
DirectX8 чтоли устанавливать надо?
Нужна ActiveX библиотека dx8vb.dll
0
 Аватар для aptos
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
25.04.2014, 10:14  [ТС]
Цитата Сообщение от 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
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
25.04.2014, 10:16
Цитата Сообщение от aptos Посмотреть сообщение
"Active X component cannot create object"
Библиотека зарегистрирована?
0
 Аватар для aptos
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
25.04.2014, 13:19  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Библиотека зарегистрирована?
А точно, через cmd.exe ведь регестрировать надо...

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

Не по теме:

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

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

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

Добавлено через 9 минут
Ну это несущественно, вот вопрос назрел. Что именно создает Direct3DCreate? В книге как-то этот момент обошли. Видно что-то Direct и 3D, но суть непонятна
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
25.04.2014, 13:53
Лучший ответ Сообщение было отмечено 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
 Аватар для aptos
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
25.04.2014, 14:55  [ТС]
Я вернулся...

Не по теме:

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



Как всегда спасибо, мне бы преподавателя такого в универ... Все знаете.
Пока света не было и батарея на ноуте была жива, еще появились вопросы, не совсем именно по 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
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
25.04.2014, 14:56
Цитата Сообщение от aptos Посмотреть сообщение
DoEvents возвращает значение, равное количеству открытых форм. Зачем он тут:
Функция DoEvents выполняет обработку сообщений находящихся в очереди. Если убрать DoEvents то приложение не будет отвечать и зависнет.
Цитата Сообщение от aptos Посмотреть сообщение
И еще, когда происходит событие Form_QueryUnload?
http://visualprogs.ru/all/6.html
Цитата Сообщение от aptos Посмотреть сообщение
Двоеточие в If это как запятая, можно действия перечислять которые в нем произойти должны?
Двоеточие эквивалентно переводу на новую строку.
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
25.04.2014, 14:59
Цитата Сообщение от aptos Посмотреть сообщение
Насколько понял из MSDN (если правильно перевел), DoEvents возвращает значение, равное количеству открытых форм. Зачем он тут:
DoEvents включает реакцию на события !

Добавлено через 2 минуты
Тоесть если использовать какой-либо безконечный цикл надо делать так
Visual Basic
1
2
3
Do
    DoEvents
Loop
безконечный цикл, но при этом продолжает реагировать на нажатия кнопок и мышок
иначе программа зависнет
0
 Аватар для aptos
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
25.04.2014, 15:03  [ТС]
Цитата Сообщение от 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
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
25.04.2014, 15:07
Цитата Сообщение от aptos Посмотреть сообщение
Аааа, теперь понял, спасибо!
я кстате дословно перевел, воспользовавшись яндекс-переводчиком ...Do Events = Неужели События
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
25.04.2014, 15:15
Лучший ответ Сообщение было отмечено 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
25.04.2014, 15:16

Не по теме:

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

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

Не по теме:

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

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



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

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

Т.е. сообщения - это реакция VB6 на какие-то изменения(события)?
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
25.04.2014, 19:18
Цитата Сообщение от aptos Посмотреть сообщение
да, точность яндекса на высоте
потому что гугл делали американские русофобы
а яндекс лицом к нам )

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

Добавлено через 48 секунд
поэтому они в очередях ...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.04.2014, 19:18
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
57
Ответ Создать тему
Опции темы

Новые блоги и статьи
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru