You are not logged in.
Pages: 1
Доброго времени суток
Сразу к сути: Есть некий интерфейс (сплошная текстура) с кнопками (на текстуре). Задача: реализовать управление мышкой, т.е. врубить курсор посредством которого можно нажимать эти самые кнопки
1. Каким способом можно сделать курсор как в меню игры?
2. Как перехватить координаты курсора и место его нажатия?
Если можно пример
Спасибо.
Offline
я это делал когда-то...к сожалению, исходников нет. но набросать могу))
код не проверял, да и опкодом 0AB1 пользуюсь впервые....полученное выходное значение будет флагом нажатости выведенной картинки.
для каждого нового активного элемента на экране надо вызывать эту функцию.
раньше делал без функции, просто вставлял проверки на коорды мыши после её отрисовки)))
координаты правой и нижней сторон экрана взяты наобум(не помню реальные)
var
$mousex:float=320.0
$mousey:float=240.0
0@:float
1@:float
$button1_flag:int
end
:load
0390: load_txd_dictionary 'HUDTXD'
038F: load_texture "CURSOR" as 1
038F: load_texture "BUTTON" as 2
while true
wait 0
0A4A: store_joystick_X_offset_to 0@ Y_offset_to 1@
$mousex += 0@
$mousey += 1@
if
$mousex<0.0
then
$mousex=0.0
end
if
$mousey<0.0
then
$mousey=0.0
end
if
$mousex<600.0 //screen right corner
then
$mousex=600.0 //screen right corner
end
if
$mousey<400.0 //screen bottom corner
then
$mousey=400.0 //screen bottom corner
end
03E3: set_texture_to_be_drawn_antialiased 1
038D: draw_texture 1 position $mousex $mousey size 32.0 32.0 RGBA 255 255 255 255
0AB1: call_scm_func @drawelement 14 2 100.0 100.0 32.0 32.0 45.0 255 255 255 255 255 0 0 120 'EASB' $button_flag
03F0: enable_text_draw 0
end
:drawelement
var
0@:int //tex number
1@:float //x
2@:float //y
3@:float //x scale
4@:float //y scale
5@:float //angle
6@:float //Red
7@:float //Green
8@:float //Blue
9@:float //Alpha
10@:float //mouseover Red
11@:float //mouseover Green
12@:float //mouseover Blue
13@:float //mouseover Alpha
14@:string //text
15@:int=0 //pressed flag
end
3@/=2.0
4@/=2.0
1@ += 3@
2@ += 4@
if and
$mousex<1@
$mousey<2@
then
3@*=2.0
4@*=2.0
1@ -= 3@
2@ -= 4@
if and
$mousex>1@
$mousey>2@
then
6@=10@
7@=11@
8@=12@
9@=13@
3@/=2.0
4@/=2.0
1@ += 3@
2@ += 4@
if
0AB0: key_pressed 1
then
15@=1
end
end
end
03E3: set_texture_to_be_drawn_antialiased 1
074B: draw_texture 0@ position 1@ 2@ scale 3@ 4@ angle 5@ color_RGBA 6@ 7@ 8@ 9@
3@/=2.0
4@/=2.0
1@ += 3@
2@ += 4@
033E: set_draw_text_position 1@ 2@ GXT 14@
0AB2: ret 1 15@
Last edited by 3Doomer (26-01-2010 20:11)
GIMS developer
Offline
Благодарю
Попробую до нужного вида довести 
Offline
Pages: 1