andrgysev02 3 Опубликовано: 3 октября, 2015 Здравствуйте, извините за беспокойство, назрел один вопрос... Я только начал изучать OC, но нигде не нашел, как создавать элементы интерфейса, кнопки например... Подскажите пожалуйста, если не трудно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SDV 784 Опубликовано: 3 октября, 2015 Здравствуйте, извините за беспокойство, назрел один вопрос... Я только начал изучать OC, но нигде не нашел, как создавать элементы интерфейса, кнопки например... Подскажите пожалуйста, если не трудно...Хелло амиго! Хочешь использовать готовую GUI-библиотеку жми сюда -> клац И в следующий раз если захочешь использовать чьи-то библиотеки, то они все находятся в разделе "Библиотеки пользователей". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 3 октября, 2015 По умолчанию функции "создай кнопку" не имеется. Можно нарисовать и повесить листенер, но занятие это не особо увлекательное. Так что на свете существует море всяких ГУИ-либ, который призваны отрисовывать сами всякие списки, поля, кнопки и прочее. Пример либы с нашего форума: http://computercraft.ru/topic/1016-oc-%D0%BB%D1%91%D0%B3%D0%BA%D0%B0%D1%8F-%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0-gui/ Есть ещё либа с форума ОС официального. Вот: http://oc.cil.li/index.php?/topic/580-gui-api-064beta/ Сразу говорю: с английским вариантом даже не хотелось работать (смущает дурацкое название и какой-то скудный функционал). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov 34 Опубликовано: 3 октября, 2015 (изменено) Так же советую FormsMaker Замечательная штука: спроектировал гуи и можно писать код, привязывая функции к элементам интерфейса) Изменено 3 октября, 2015 пользователем SergOmarov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 3 октября, 2015 Есть еще вот такая библиотека http://computercraft.ru/topic/886-oc-gml-11-gui-библиотека/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
JaggerDer 90 Опубликовано: 3 октября, 2015 (изменено) Еще можно написать велосипед. Но это на тот случай, если захочется изучить как в ОС скрипты писать или просто на lua(в данном случае), или понять самому как все эти библиотеки работают(примерно) - гемморой одним словом. Зато скилл повышает. Мне кажется, что все проходили через стадию написания своей GUI библиотеки Про то как это сделать могу описать примерно, как говорится в двух словах, т.к. возможных вариантов реализации о-о-очень много. Самый легкий спопоб это просто ловить эвент нажатия кнопки мыши в вечном цикле. Далее из эвента вытаскивать координаты и проверять лежит ли эта координата внутри некого прямоугольника, которым в нашем случае является кнопка. Код примерно такой: --Подгрузка нужных API local event = require "event" --Штука которая позволяет ловить события, например нажатия кнопок и пр. local gpu = require "component".gpu --Наша видеокарта, с посощью которой будут отрисовываться кнопки. --Находится ли заданная точка внутри прямоугольника. local function PointInRect(x, y, sx, sy, ex, ey) if (x >= sx) and (x <= ex) and (y >= sy) and (y <= ey) then return true end return false end --"Создаем" наши кнопки. Точнее мы просто записываем в "массив" информацию о местоположении и размерх кнопки. local button1 = { x = 10, y = 10, width = 5, height = 6 } local button2 = { x = 20, y = 30, width = 20, height = 10 } --Установить цвет экрана на красный(таким цветом отрисуется наша кнопка) gpu.setBackground(0xff0000) gpu.fill( button1.x, button1.y, button1.width, button1.height, ' ' ) --Установить цвет экрана на зеленый gpu.setBackground(0x00ff00) gpu.fill( button2.x, button2.y, button2.width, button2.height, ' ' ) --Восстановить цвет экрана на черный gpu.setBackground(0) --Вечный цикл, в котором мы будем ловить эвенты для отлова нажатия на нашу кнопку while true do --Ловим эвент touch, т.е. эвент нажатия кнопки --touch(screenAddress: string, x: number, y: number, button: number, playerName: string) local _, x, y, button = event.pull( "touch" ) --Если мы нажали на левую кнопку мыши if ( button == 0 ) then --Если мы кликнули по первой кнопке, то вывести сообщение на экран(то есть координаты точки(x, y), куда мы кликнули находятся внутри прямоугольника) if ( PointInRect( x, y, button1.x, button1.y, button1.width+button1.x, button1.height+button1.y ) ) then print("Button1 pressed!") elseif ( PointInRect( x, y, button2.x, button2.y, button2.width+button2.x, button2.height+button2.y ) ) then --а если мы кликнули по второй кнопке, то вывести сообщени о попадании на вторую кнопку print("Button2 pressed!") end end end Данный код я не тестировал, может не работать. Написал чисто для примера. Единственное что тут наверняка работает, так это функция PointInRect. Информацию о всяких эвентах и встроенных библиотеках можно найти тут: http://ocdoc.cil.li. Изменено 3 октября, 2015 пользователем JaggerDer Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Здравствуйте, извините за беспокойство, назрел один вопрос... Я только начал изучать OC, но нигде не нашел, как создавать элементы интерфейса, кнопки например... Подскажите пожалуйста, если не трудно...
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах