Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 28.12.2006, 17:58   #1
Atomikc
Бывалый
 
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений
(для 257 пользователей)
Курсор

Вот сижу и думаю. Как сделать нормальный рабочий курсор.
Вот код, и один фиг неработает. Помогите плиз


Graphics 800,600,32,2

;курсор

Global curs=LoadImage("data/menu/cursor.bmp")
MidHandle curs

Function curs_Update()


End Function

;Фон меню
img=LoadImage("data/menu/galaxi.jpg")
DrawImage img ,0,0 ; Позиция

;Логотип
Logo=LoadImage("data/menu/logo.bmp")
MaskImage Logo ,0,0,0 ; Маска
DrawImage Logo ,100,50 ; Позиция


;Музыка
sam =LoadSound ("data/sound/menu.mp3") ;загрузка музыки
PlaySound sam; Старт музыки

While Not KeyHit(1)=1

curs_update()
DrawImage curs,MouseX(),MouseY()
Flip
Wend

;----------------------------
End
(Offline)
 
Ответить с цитированием
Старый 28.12.2006, 19:31   #2
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Re: Курсор

во первых - не используй команду loadsound\playsopund длябольших музыкальных файлов(в данном случае это музыка), а используй playmusic(путь)
во вторых - используй команду cls. Поставь её в цикле.
Надеюсь полученый результат, то что ты хотел?
(Offline)
 
Ответить с цитированием
Старый 28.12.2006, 20:05   #3
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: Курсор

ZanoZa
Наоборот - для музыкальных файлов лучше юзать LoadSound\PlaySound, так как PlayMusic() после каждого вызова загружает файл с диска заного, что может вызвать "тормоза".
Atomikc
Фон нужно тоже рисовать в цикле, и не юзай сравнение вроде "... = 1" вместe с оператором Not - или то или другое.

Repeat
Cls()
DrawImage(img, 0, 0)

DrawImage(curs, MouseX(), MouseY())
Flip()
Until KeyDown(1)
(Offline)
 
Ответить с цитированием
Старый 28.12.2006, 21:02   #4
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Re: Курсор

всмысле "заново"? а для чего же нам даны команды play\stop\resumechannel?
(Offline)
 
Ответить с цитированием
Старый 28.12.2006, 21:13   #5
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: Курсор

ZanoZa
Ну если трек один то да, можно и PlayMusic(), а если их несколько? PlayMusic() после вызова обращается к диску - загружает трек и начинает проигрывать его, это вроде как LoadSound() и PlaySound() вместе. А если нужно сразу загрузить несколько треков, а потом их проигрывать (поочередно или еще как-нить) то лучше юзать LoadSound()
Почитай справку повнимательнее
(Offline)
 
Ответить с цитированием
Старый 28.12.2006, 21:41   #6
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Курсор

imho. PlayMusic рулит. я так понимаю он проигрывает музыку "на лету".
Imho. не рулит тогда когда идет активная работа с жд (pagefile.sys например).
(Offline)
 
Ответить с цитированием
Старый 28.12.2006, 22:12   #7
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Re: Курсор

А почему у тебя в обоих постах доминирует работа с диском? это не обязательно.
Я делал проигрыватель - вполне нормально работает с playmusic, никак тормозов не было.
Если нужны конкретные треки, то да, стоит использывать load\playsound
Если проигрывание треков из какой-нить папки поочерёдно, то я бы придерживался playmusic.
(Offline)
 
Ответить с цитированием
Старый 28.12.2006, 22:21   #8
Atomikc
Бывалый
 
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений
(для 257 пользователей)
Re: Курсор

Пасиб. попробую..
Я предпологал что надо ставить Cls но кудаб я её не пихал, у меня стирало обсалютно всё.
Что вы спорите. Там играет простенькая маловесящяя мелодия. Тармозов вроде не замечал. Ну раз уж вы и этот вопос подняли то хотел спросить, а как задать, чтоб музыка повторялась бесконечно?
(Offline)
 
Ответить с цитированием
Старый 28.12.2006, 23:43   #9
Atomikc
Бывалый
 
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений
(для 257 пользователей)
Re: Курсор

Ну Вроде работает, хотя я задам ещё три вопроса и надеюсь меню я доделпю сам.
1. Как стереть стандартный курсор. А то он закрывает мой.
2. Курсор двигается рывкамию Как исправить.
3. Задумал звёзды сделать анемированые, но не получается их размножить: У меня экран 800 на 600, а картинка 400 на 300, а ещё это должно двиготся вниз.
Вот код:
;================================================================== 
; Star Trash
; Космическая стрелялка. Дата начало работы 27.12.06
;=================================================
Graphics 800,600,32,2

;Фон меню
img=LoadImage("data/menu/galaxi.jpg")
DrawImage img ,0,0 ; Позиция

;звёзы
star=LoadImage("Data/menu/fon.png")
MaskImage star, 0,0,0
TileImage star ;размножение звёзд

;Логотип
 Logo=LoadImage("data/menu/logo.bmp")
MaskImage Logo ,0,0,0 ; Маска
;DrawImage Logo ,100,50 ; Позиция

;Музыка
sam=PlayMusic("data/sound/menu.mp3") ;загрузка музыки

;курсор
Global curs=LoadImage("data/menu/cursor.bmp");Загруска курсора

;цикл
Repeat
Cls()
DrawImage(img, 0, 0);Позиция галактики
DrawImage(logo, 100,50);позиция логотипа
DrawImage (star ,0,0 ); Позиция звёзд

DrawImage(curs, MouseX(), MouseY());Позиция Курсора
Flip()
;----------------------------
Until KeyDown(1)
Вот медиа:
(Offline)
 
Ответить с цитированием
Старый 28.12.2006, 23:48   #10
Atomikc
Бывалый
 
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений
(для 257 пользователей)
Re: Курсор

Ну а что ты хотел. Учюсь.
(Offline)
 
Ответить с цитированием
Старый 29.12.2006, 00:25   #11
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Re: Курсор

Чтобы спрятать курсор использую команду HidePointer.
Имхо, звёзды лучше сделать програмно. То есть размножить их командой plot исползуя цикл.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
MidGard (03.09.2009)
Старый 29.12.2006, 00:45   #12
Atomikc
Бывалый
 
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений
(для 257 пользователей)
Re: Курсор

Ну дапустим сделал 50 точек разного размера, как их заставить все двигаться вниз
(Offline)
 
Ответить с цитированием
Старый 29.12.2006, 01:09   #13
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Курсор

3.
TileImage star,0,star_y
star_y=(star_y+1) mod 300
про музыку:
до главного цикла
ch_music=playmsuic("music.mp3")
в главном цикле (там где музыка может кончиться)
if channelplaying(ch_music)=0 then ch_music=playmsuic("music.mp3")
(Offline)
 
Ответить с цитированием
Старый 29.12.2006, 01:27   #14
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Курсор

вот твой исправленный код:
;================================================================== 
; Star Trash
; Космическая стрелялка. Дата начало работы 27.12.06
;=================================================
Graphics 800,600,32,2
SetBuffer BackBuffer()
HidePointer

;Фон меню
img=LoadImage("data/menu/galaxi.jpg")
DrawImage img ,0,0 ; Позиция

;звёзы
star=LoadImage("Data/menu/fon.png")
MaskImage star, 0,0,0
TileImage star ;размножение звёзд

;Логотип
 Logo=LoadImage("data/menu/logo.bmp")
MaskImage Logo ,0,0,0 ; Маска
;DrawImage Logo ,100,50 ; Позиция

;Музыка
sam=PlayMusic("data/sound/menu.mp3") ;загрузка музыки

;курсор
Global curs=LoadImage("data/menu/cursor.bmp");Загруска курсора

;цикл
Repeat
Cls()
TileImage star,0,star_y
DrawImage(img, 0, 0);Позиция галактики
DrawImage(logo, 100,50);позиция логотипа
If ChannelPlaying(sam)=0 Then sam=PlayMusic("data/sound/menu.mp3") 

star_y=(star_y+1) Mod 300

DrawImage(curs, MouseX(), MouseY());Позиция Курсора
Flip()
;----------------------------
Until KeyDown(1)
найди 5 отличий

2. Есть такая штука - BackBuffer. включяается командой
SetBuffer BackBuffer()
короче не вдаваясь в подробности это создает второй DirectSurface, на который все и прорисовывается и когда надо (командой flip). первичный и вторичный буффер меняются местами. короче - ето чтоб не дрожало.

P/S> все же рекомендую делать полноэкранные приложения, так как в таком случае им выделяются максимально количесво рессурсов.

2 Jimon не работает edit поетому два сообщения
(Offline)
 
Ответить с цитированием
Старый 30.12.2006, 00:27   #15
Atomikc
Бывалый
 
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений
(для 257 пользователей)
Re: Курсор

Вобщем сделал я звёзды па своему. Разобрался всётаки. С музыкой понятно, попробую. С BackBuffer я понял. Все забывал прописать
А полноэкранный режим и так будет. Просто постоянно экран насиловать не хочется. Один уже сгарел при переключении режима. Потом сделаю..
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Направленный курсор Ky3R_94 Полезные функции 6 05.12.2009 02:12
Курсор и объект Hurrit 3D-программирование 13 13.10.2009 22:33
Как установить курсор-руку в блитце? ELIAS Blitz3D 5 13.07.2009 00:13
нормальный курсор Molotov 2D-программирование 5 29.03.2009 11:38
Курсор виснет Nord 2D-программирование 7 04.01.2007 01:08


Часовой пояс GMT +4, время: 20:48.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com