См., также: Интерактивная «тревожная» кнопка с таймером
Важно!
1. Под интерактивностью (в данном случае) понимается реакция кнопки на событие «нажатие на кнопку»;
2. Событие «нажатие на кнопку» формируется при касании кнопки объектом типа (класса) Humanoid (а именно, структурного элемента Part_On, см. ниже).
3. Модель кнопки размещена в файле: Btn_Simple_Model.rbxm.
4. Иллюстрирующий пример см. в файле Btn_Simple_Example.rbxl.
Открыть краткое описание (pdf-файл)
Скачать:
Исходники + краткое описание (в zip-архиве).
Основные структурные элементы модели кнопки и ее «дизайн»
Внешний вид кнопки представлен на рисунке ниже.
Значимые структурные элементы модели кнопки приведены на рисунке ниже.
Ниже приведен список выносок на рисунке выше.
Выноска-1: Модель кнопки.
Выноска-2: «Звук».
Выноска-3: Переменная «DelayForRestore».
Выноска-4: Переменная «SoundValue».
Выноска-5: Объект (part), «отвечающий» за активное состояние кнопки и обработку события «нажатие на кнопку».
Выноска-6: Скрипт, где реализована обработка события «нажатие на кнопку».
Объект «SoundClick»
См. выноску-2 на рисунке 2.
Тип (класс): Sound.
Назначение: Формирование соответствующего звукового сигнала при «нажатии на кнопку».
Переменная «DelayForRestore»
См. выноску-3 на рисунке 2.
Тип (класс): NumberValue.
Назначение: Задержка автоматической (повторной) активации кнопки.
Если значение =0, то кнопка повторно НЕ активируется (автоматически, имеется в виду). Т.е., требуются действия «извне» для ее активации.
См. пример применения в файле Btn_Simple_Example.rbxl.
Переменная «SoundValue»
См. выноску-4 на рисунке 2.
Тип (класс): NumberValue.
Назначение: Задает уровень громкости звукового сигнала при «нажатии на кнопку».
Объект «Part_On»
См. выноску-5 на рисунке 2.
Тип (класс): Part.
Назначение:
1. Определяет внешний вид (цвет) кнопки в активном состоянии;
2. «Отвечает» за обработку события «нажатие на кнопку».
См. пример применения в файле Btn_Simple_Example.rbxl.
Объект «Script_BtnClick»
См. выноску-6 на рисунке 2.
Тип (класс): Script.
Назначение: реализация алгоритма обработки события «нажатие на кнопку».
См. пример применения в файле Btn_Simple_Example.rbxl.
На рисунке ниже приведены основные (значимые) свойства структурных элементов, отмеченных на рисунке 2 выносками.
Исходник скрипта см. на рисунке ниже, а также в текстовом формате, далее.
-- Обработка события "Нажатие на кнопку"
-- -----------------------------------------------
local btn = script.Parent.Parent -- кнопка
local sndClick = btn.Sounds.SoundClick -- звук нажатия на кнопку
sndClick.Playing = false
-- -----------------------------------------------
-- ===============================================
-- Обработчик события: "нажатие на кнопку"
local YesPress = false
script.Parent.Touched:connect(function(hit)
-- ------------------------
-- Защита от "дребезга" и "НеГуманоидов"
local YesNext = false
if YesPress == false then
if hit then
if hit.Parent:FindFirstChild("Humanoid") then
YesNext = true
end
end
end
-- ------------------------
if YesNext then
-- --------------------------------
local PartOn = script.Parent
if PartOn.Transparency == 0 then
YesPress = true -- страховка от "дребезга"
-- реакция на нажатие только,
-- если кнопка в активном состоянии
-- ------------------------------
-- перевод кнопки в пассивное состояние
-- и звук: "нажатие на кнопку"
PartOn.Transparency = 1
local PartOff = btn.Part_Off
PartOff.Transparency = 0
sndClick.Volume = btn.SoundValue.Value -- громкость звука
sndClick.Playing = true
-- ------------------------------
-- ***************************************************
-- Здесь - специфичный код при нажатии на кнопку
-- game.Workspace.Part1.Transparency = 1
-- ***************************************************
if btn.DelayForRestore.Value>0 then -- время задержки
-- перевод кнопки в активное состояние
-- ------------------------------
wait(btn.DelayForRestore.Value)
PartOn.Transparency = 0
PartOff.Transparency = 1
-- ------------------------------
-- ***************************************************
-- Здесь - специфичный код после активации кнопки
-- game.Workspace.Part1.Transparency = 0
-- ***************************************************
end
wait(0.25)
YesPress = false
end
end
end)
-- ===============================================
Дата: 21.06.2024