#1 24-01-2010 20:16

FeniX-256
Registered: 26-10-2009
Posts: 12

Мышиный интерфейс :)

Доброго времени суток smile Сразу к сути: Есть некий интерфейс (сплошная текстура) с кнопками (на текстуре). Задача: реализовать управление мышкой, т.е. врубить курсор посредством которого можно нажимать эти самые кнопки smile
1. Каким способом можно сделать курсор как в меню игры?
2. Как перехватить координаты курсора и место его нажатия?
Если можно пример smile Спасибо.

Offline

#2 26-01-2010 20:05

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Мышиный интерфейс :)

я это делал когда-то...к сожалению, исходников нет. но набросать могу))

код не проверял, да и опкодом 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

#3 29-01-2010 23:11

FeniX-256
Registered: 26-10-2009
Posts: 12

Re: Мышиный интерфейс :)

Благодарю smile Попробую до нужного вида довести smile

Offline

Board footer

Powered by FluxBB