Вторник, 26 Ноября 2024, 01:33

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Проблемы с mouse_check_button_pressed
SyankДата: Пятница, 28 Августа 2015, 16:52 | Сообщение # 1
участник
Сейчас нет на сайте
Суть такова. Изначально каждую кнопку на экране я расписывал в скрипте по отдельности. Но кнопок этих становится всё больше и по этому сделал создание кнопки отдельным скриптом. Изначально, когда кнопки были расписаны по отдельности они функционировали нормально. Я использовал функцию mouse_check_button_pressed и всё было окей. Теперь же когда кнопка в скрипте расписана, то при нажатии на неё, кнопка срабатывает не один раз при нажатии, а до тех пор пока кнопка мыши не будет отпущена. Посоветуйте как это исправить, желательно в самом скрипте.
Скрипт кнопки
Код
//scr_draw_button(x,y,spr_in,spr_pressed,spr_default,inverse)
var bt_sprite, inverse, inverse_move, result; //переменная рисуемого спрайта, зеркальность спрайта, сдвиг при зеркальности, результат действия на кнопку
if argument5 = true {inverse = -1 inverse_move=1} else {inverse = 1 inverse_move=0}; //проверка нужно ли зеркалить спрайт кнопки
проверка положения и нажатия кнопок мыши.
switch(scr_mouse_rect(argument0,argument1,argument0 + sprite_get_width(argument4)*global.resize, argument1 + sprite_get_height(argument4)*global.resize))   
    {
     case 1: bt_sprite = argument2 result=1; break; //курсор наведён на кнопку
     case 2: case 3: bt_sprite = argument3 result=2; break; //произошло нажатие ПКМ
     default: bt_sprite = argument4 result=4; break; //никаких взаимодействий с кнопкой.
    }
draw_sprite_ext(bt_sprite,-1,argument0 + ((sprite_get_width(bt_sprite)*global.resize)*inverse_move) ,argument1,(1*global.resize)*inverse,1*global.resize,0,c_white,1) //отрисовка кнопки
return result;//скрипт возвращает результат взаимодействия с кнопкой

И сама кнопка в Draw
Код
bt_act = scr_draw_button(0,0,spr_action_bt_in,spr_action_bt_pressed,spr_action_bt,false) //создание кнопки
if bt_act = 2 //если кнопка нажата, происходит действие в скобках.   
    {
     if action_menu = true then action_menu = false else action_menu = true
    }

Я надеялся что со скриптом код будет менее заграмождённым, а всё может выйти на оборот.


Сообщение отредактировал Syank - Пятница, 28 Августа 2015, 23:57
minepecraftДата: Пятница, 28 Августа 2015, 21:16 | Сообщение # 2
участник
Сейчас нет на сайте
Мало комментариев к коду,прошу все прокомментировать.

Quad69Дата: Суббота, 29 Августа 2015, 00:35 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
scr_mouse_rect это что?

Вот простой способ решения.
Код
if bt_act = 2 and alarm[0]=-1 //если кнопка нажата, происходит действие в скобках.    
     {  
      if action_menu = true then action_menu = false else action_menu = true  
      alarm[0]=2
     }

В объекте в котором выполняешь скрипт выше:
Код
//Событие alarm 0
if mouse_check_buttom(mb_left)
{
alarm[0]=2
}
SyankДата: Суббота, 29 Августа 2015, 00:50 | Сообщение # 4
участник
Сейчас нет на сайте
maksim1221232, отлично! Работает. Вот интересно, получится ли один alarm использовать для всех кнопок?
Quad69Дата: Суббота, 29 Августа 2015, 01:12 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
Цитата Syank ()
Вот интересно, получится ли один alarm использовать для всех кнопок?

Один на всех скорее всего да.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг