Перейти к публикации
Форум - ComputerCraft
ECS

Библиотека пользовательского интерфейса "GUI"

Рекомендованные сообщения

Возникла проблемка, 

Хочу забить в функцию переменную силы сигнала, но чета как то никак. Компилятор ругается, без понятия почему.
 

local GUI = require("GUI")
local component = require("component")
local sides = require("sides")
local colors = require("colors")
local rs = component.redstone 
local MaxSignalPower = 256

--------------------------------------------
local mainContainer = GUI.fullScreenContainer()
mainContainer:addChild(GUI.panel(1, 1, mainContainer.width, mainContainer.height, 0x2D2D2D))

local inputPower = mainContainer:addChild(GUI.input(5, 4, 30, 3, 0xEEEEEE, 0x555555, 0x999999, 0xFFFFFF, 0x2D2D2D, "", ""))

local powerSignal

inputPower.onInputFinished = function()
	powerSignal = inputPower.text 
end

  
local function rOutput()
 rs.setOutput(sides.top, powerSignal)
end

local function rOutputOff()
 rs.setOutput(sides.top, 0)
end

local switch2 = mainContainer:addChild(GUI.switch(5, 12, 8, 0x66DB80, 0x1D1D1D, 0xEEEEEE, false))
switch2.onStateChanged = function()
  if switch2.state then
    rOutput(sides.top, powerSignal)
  else
    rOutputOff()
  end
end

------------------------------------------------
mainContainer:drawOnScreen(true)
mainContainer:startEventHandling()

Снимок.PNG

Изменено пользователем ZloyApelsihchik
объединение сообщений

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Дык поле input.text является строкой, ты ж ее сам вводишь в виде текста, в виде чертовых символов. А функция redstone.setOutput(side, strength) в качестве второго аргумента принимает только числа. Ясен фиг ругается, если ты ей пытаешься текст скормить. Юзай что-то типа этого:

inputPower.onInputFinished = function()
  -- Зачекай, а то мало ли там вообще не число введено
  if inputPower.text:match("%d+") then
  	powerSignal = tonumber(inputPower.text)
  end
end

Второй вариант с автоматической валидацией:

inputPower.validator = function()
	return inputPower.text:match("%d+")
end

-- При наличии validator этот метод выполнится только в случае успешной валидации текста
inputPower.onInputFinished = function()
  powerSignal = tonumber(inputPower.text)
end

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
14 часов назад, ECS сказал:

Дык поле input.text является строкой, ты ж ее сам вводишь в виде текста, в виде чертовых символов. А функция redstone.setOutput(side, strength) в качестве второго аргумента принимает только числа. Ясен фиг ругается, если ты ей пытаешься текст скормить. Юзай что-то типа этого:


inputPower.onInputFinished = function()
  -- Зачекай, а то мало ли там вообще не число введено
  if inputPower.text:match("%d+") then
  	powerSignal = tonumber(inputPower.text)
  end
end

Второй вариант с автоматической валидацией:


inputPower.validator = function()
	return inputPower.text:match("%d+")
end

-- При наличии validator этот метод выполнится только в случае успешной валидации текста
inputPower.onInputFinished = function()
  powerSignal = tonumber(inputPower.text)
end

 

Ох, как сложно. 
Так, то что ты написал, это как я понял, проверка введённого текста, на то число ли это?
Я не совсем понимаю что такое tonumber. Но опять же как я понял, это что вроде конвертера в число?
И что такое validator, тоже хотелось бы узнать.
Простите за такое большое кол-во вопросов, я новичок в это деле и вопросов тьма. 
Спасибо за помощь :3 Кусь 
 

Изменено пользователем ZloyApelsihchik

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, ZloyApelsihchik сказал:

Я не совсем понимаю что такое tonumber. Но опять же как я понял, это что вроде конвертера в число?

 

Дыа, так и есть. Я не понимаю, зачем ты, не изучив основ, лезешь в написание интерфейсного софта. Хоть потренькался бы чутка на хелловорлдах

 

2 часа назад, ZloyApelsihchik сказал:

И что такое validator, тоже хотелось бы узнать.

 

Вообще из коммента в коде выше все должно быть понятно, да и в документации эта инфа подробно разжевана. Захотел бы - узнал бы

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×