|
23.03.2013, 14:47
|
#211
|
Оператор ЭВМ
Регистрация: 06.03.2009
Сообщений: 21
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Вопрос.
Есть тайловое игровое поле - большое (1000х1000), когда я двигаюсь и его перерисовываю части изображения начинают как бы "дребезжать и смазываться"...
1. Можно ли как то это устранить, может синхронизацией какой то?
2. Может лучше давать перерисовывать только видимые тайлы , а не все поле?
Спасибо.
|
(Offline)
|
|
23.03.2013, 17:42
|
#212
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Рисовать обязательно надо только видимые тайлы. Во-первых, какой смысл рисовать то, что мы не видим? Во-вторых, мало того, что это бесполезно, мы ещё и производительность теряем.
Измени Flip, на Flip(1), должно помочь.
|
(Offline)
|
|
23.03.2013, 18:41
|
#213
|
Оператор ЭВМ
Регистрация: 06.03.2009
Сообщений: 21
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Спасибо, попробую.
|
(Offline)
|
|
03.04.2013, 15:43
|
#214
|
Оператор ЭВМ
Регистрация: 06.03.2009
Сообщений: 21
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Еще раз спасибо, все сделал, все получилось.
Тут возник такой вопрос.
Есть главный файл
В нем
...
Include "Bullet.bmx"
Import "Collisions.bmx"
...
Global BulletList:TList = CreateList()
...
в главном цикле
...
CollisionsCheck()
...
Хочу сделать в отдельном файле Collisions.bmx всякую проверку столкновений, но не могу "добраться" ...
Function CollisionsCheck()
For Local Bullet:TBullet = EachIn BulletList
If Bullet.BulletCollided = 1 Then DrawText "Collide" + BulletX, 10, 30
Next
EndFunction
Выдает ошибку "Compile Error: Identifier 'TBullet' not found"
Параметр BulletCollided описан в Bullet.bmx
Спасибо.
|
(Offline)
|
|
03.04.2013, 16:08
|
#215
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Поидее должно работать но к чему тут Import?
Include "Bullet.bmx"
Import "Collisions.bmx"
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
03.04.2013, 17:06
|
#216
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Емнип Import в BlitzMAX это как Include_once, добавляет только если ещё не было добавлено ранее.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
03.04.2013, 18:27
|
#217
|
Оператор ЭВМ
Регистрация: 06.03.2009
Сообщений: 21
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Спасибо, заработало. Поменял Import на Include.
/не опытен я еще /
|
(Offline)
|
|
04.04.2013, 17:42
|
#218
|
Оператор ЭВМ
Регистрация: 06.03.2009
Сообщений: 21
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Вопрос.
А можно ли как-то узнать координаты точки в которой произошла коллизия? Я имею ввиду не координаты двух обьектов (это мы знаем), а именно координати пикселя где они с толкнулись.
Спасибо.
|
(Offline)
|
|
04.04.2013, 23:27
|
#219
|
Оператор ЭВМ
Регистрация: 06.03.2009
Сообщений: 21
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Еще вопрос.
Проверяю столкновение.
Вот такой вариант работает
Local p:Object[] = CollideImage(BulletImage, BulletX, BulletY, 0, 1, 0)
For Local i:Int = 1 To p.Length
DrawText "Collide" + (TTile(p[i - 1] ).MapX), 10, 250
Next
А такой нет
Local p:Object = CollideImage(BulletImage, BulletX, BulletY, 0, 1, 0)
If p <> Null Then
Local i:Int = TTile(p).MapX
DrawText "Collide " + BulletX, 10, 250
EndIf
Как бы одно и тоже, но во втором варианте выдает ошибку, типа ссылка на Null объект... хотя отладчик показывает, что переменная р не пустая...
|
(Offline)
|
|
05.04.2013, 14:03
|
#220
|
Знающий
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений (для 70 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
в первом случае кастуешь указатель на объект к тайлу
во втором случае кастуешь указатель на коллекцию обьектов, что неверно, преобразовать тип не удалось, в результате указатель на TTile становится null
и еще
For Local i:Int = 1 To p.Length
...[i - 1]...
|
Юзай Until:
For Local i:Int = 0 Until p.Length
...[i]...
|
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
06.04.2013, 12:00
|
#221
|
Оператор ЭВМ
Регистрация: 06.03.2009
Сообщений: 21
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Сообщение от Platon
в первом случае кастуешь указатель на объект к тайлу
во втором случае кастуешь указатель на коллекцию обьектов, что неверно, преобразовать тип не удалось, в результате указатель на TTile становится null...
|
Спасибо. Кажись понял.
|
(Offline)
|
|
07.04.2013, 01:23
|
#222
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Не подскажите, как можно свернуть окно приложения так, чтобы оно не отображалось на панели задач? Желательно также, чтобы в трее тоже не было видно.
|
(Offline)
|
|
09.04.2013, 01:46
|
#223
|
Задрот
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений (для 863 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Сообщение от Nikich
Не подскажите, как можно свернуть окно приложения так, чтобы оно не отображалось на панели задач? Желательно также, чтобы в трее тоже не было видно.
|
WinAPI. онли
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.04.2013, 17:17
|
#224
|
Оператор ЭВМ
Регистрация: 06.03.2009
Сообщений: 21
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Назрели два вопроса. Буду признателен за помощь.
Первый.
Каким образом можно узнать/отсчитывать отрезки времени. Например мне нужно выполнять некоторое действие скажем каждые 10, 15, 30 сек?...
Второй.
Есть тайл-изображение (32х32, png), есть другой тайл (32х32, png). Нужно обьеденить эти изображения (скажем методом "И"), то есть поверх первого нарисовать другое, и что бы результат действий записался вместо первого изображения. Можно как то это сделать?, а то сейчас просто рисую второе поверх первого, что не есть хорошо.
Спасибо.
|
(Offline)
|
|
14.04.2013, 17:55
|
#225
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Global time=MilliSecs(), interval = 500
...
if MilliSecs()-time>interval
...
time=MilliSecs()
endif
Мне кажется, попиксельно изменять картинку будет медленнее, чем нарисовать 2 картинки.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:38.
|