Ответ: Проблемы с переводом
Я нарыл исходник с бесконечным циклом отриссовки и оконным режимом. Возникли следующие вопросы:
Что обозначает строка DoEvents перед loop в бесконечном цикле отрисовки?(без неё проект тупо виснет) Нормально ли что отрисовка в цикле сделана без функции OnPaint? Что делает метод DirectDrawSurfase7 Blt? Что за метод Flip, а точнее почему он необходим при FullScreen режиме (в конце для отрисовки), но не требуется в оконном? |
Ответ: Проблемы с переводом
1. DoEvents - выполняет цикл по оконным сообщениям, необходим для правильной работы окна. Если его убрать, то окно не сдвинешь с места и возможно не будет верной отрисовка. Так что он обязателен.
2. Нормально. 3. Понятия не имею, т.к. с DerectDraw не работал, возможно что-то связанное с синхронизацией буферов или блоков памяти. Вот нашел описание - ссылкаhttp://www.gamedev.ru/code/forum/?id=36432#m3. Похоже это копирование части или всего сурфэйса в другой сурфэйс. 4. Flip обычно меняет местами передний и задний буферы. Т.е. картинка рисуется на заднем буфере, а потом отображается пользователю полностью. На самом деле в оконном режиме он скорее всего тоже необходим для правильной отрисовки. |
Ответ: Проблемы с переводом
Подскажите плиз. Каким образом в структуре описать НЕ SHARED массив ФИКСИРОВАННОЙ ДЛИННЫ?
(что то духе) Public Structure a Public b(100) As Long End Structure (только работающее) |
Ответ: Проблемы с переводом
В структурах нельзя объявлять массивы сразу фиксированной длины.
|
Ответ: Проблемы с переводом
Хотел бы уточнить что DoEvents выделяет системе время на обработку событий, в том числе и на отрисовку невалидных областей экрана. В ресурсоемких и долгих по времени циклах рекомендуется ставить чтобы небыло фриза приложения плоть до непрорисовки элементов окна.
|
Ответ: Проблемы с переводом
????
А как тогда реатизовать в ВБ 2010 аналог следующего кода в вб 6.0 Public Type A B(100) as long End type |
Ответ: Проблемы с переводом
А почему бы класс не использовать вместо структуры?
|
Ответ: Проблемы с переводом
Я об этом подумывал. Тогда другой вопрос. Как решить nullReferenceExpresion was unhandled: Object reference not set to an instance of an object?(Это выдаётся в случае с классом)
|
Ответ: Проблемы с переводом
класс надо сначала инициализировать (выделить память под экземпляр при создании с ключевым словом New)
|
Ответ: Проблемы с переводом
А как обойти Arrays cannot be declared with new?
|
Ответ: Проблемы с переводом
Да что же тут такого сложного
PHP код:
|
Ответ: Проблемы с переводом
Простие, вы меня не поняли. Знаю, сам виноват - изяснялся туманно. Про выделение памяти для ПЕРЕМЕННЫХ все было понятно с первого раза. Я переспрашиват как выделять память на МАССИВЫ. Если
Public Class A Public B(100) As Long End Class Public Shared C(100) As new A То Arrays cannot be declared with 'New'. если Public Shared C(100) As A= new A то Explicit initialization is not permitted for arrays declared with explicit bounds. Это и сложно... |
Ответ: Проблемы с переводом
Нельзя инициализировать массив во время обявления, если у него объявлен размер.
Если надо в другом классе объявить инициализированный массив типа А, то в его статическом конструкторе нужно проинициализировать каждый элемент. PHP код:
|
Ответ: Проблемы с переводом
О ужас! Куда я попал! ....
Тоесть здравый анлалог (в смысле без гемора инициализации) следующего кода в 2010 невозможен? Public Type A b(100) as long end type Public a(100) as a |
Ответ: Проблемы с переводом
Если не инициализировать, то в каждом элементе второго массива будет Nothing, а не экземпляр класса A.
При использовании структур как выяснилось - запрещается объявлять массивы фиксированный длины. :pardon: я вообще на C# программирую ;) Может нужно что-то проще? зачем объявлять тип для массива? |
Часовой пояс GMT +4, время: 03:28. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot