Перейти к содержимому

Лидеры


Популярный контент

Показан контент с высокой репутацией 22.11.2022 во всех областях

  1. 1 балл
    Ничего не понял, т.к. исходники из архива работают без ошибок. Судя по скрину, проблема была в том, что b на каком-то этапе становилась nil - вполне вероятно, из-за того, что она глобальна для нескольких файлов приложения, и возникал конфликт Ошибка в либе unicode, иссую на гите создал, должны пофиксить. Вообще, если уж играешь на снапшотах, то стабильности ждать не приходится - на то они и снапшоты Доделать - не, слишком сложно и непонятно, а немного инфы по системе дать могу: 1) При работе с UI и workspace не стоит злоупотреблять слушателями нажатий на клавиши через event.addHandler, т.к. это низкоуровневая фича, предназначенная для обработки событий вне интерфейса. К примеру, для библиотеки keyboard и реализации метода isKeyDown она вполне пригодна, а вот в случае с интерфейсом она дарует лишь попоболь, заставляя вручную вызывать event.removeHandler при любых ошибках или при закрытии приложения. Поэтому, если ты разрабатываешь оконное приложение, интегрирующееся в системный workspace (тот самый, где располагаются ярлыки на раб. столе), следует использовать концепцию "перегрузки" обработчика событий для окна приложения. После закрытия окна все обработчики автоматически удалятся вместе с окном. А если ты создаешь полноэкранное приложение с кастомным workspace (существующее вне рабочего стола ОС), проще всего использовать назначить обработчик событий для всего рабочего пространства. После выхода из приложения все обработчики также будут удалены. 2) Юишка в майноси построена по принципу Single Thread Application с 1 общим бесконечным циклом на всё рабочее пространство. При возникновении события каждый визуальный элемент на экране получит возможность как-то отреагировать на него через eventHandler. Если тебе нужно параллельно работать в интерфейсе и делать что-то, скажем, раз в 5 сек, то: local workspace = GUI.workspace() local interval = 5 local deadline = uptime + interval -- Добавляем в рабочее пространство кнопки, картинки и т.п. ... -- Назначаем глобальный обработчий событий для всего рабочего пространства workspace.eventHandler = function(_, _, e1) if computer.uptime() > deadline then -- Осуществляем желаемое действие раз в 5 сек deadline = computer.uptime() + interval end end -- Пуллим события с максимально возможной скоростью и нулевой задержкой workspace:start(0) Это я к тому, что не следует создавать вложенных бесконечных циклов, работающих параллельно через имитацию многопоточности, т.к. это масло масляное и против самой концепции STA в рамках однопоточных опенкомпов 3) Если прям уж СИЛЬНО хочется работать с потоковыми библиотеками, то хозяин - барин. Но в этом случае как минимум не следует использовать глобальные переменные типа b, wrk, todraw, которые гарантированно приведут к конфликтам имён и засорят пространство
  2. 1 балл
    В этой печали сложно быть одиноким. В Интернете ничего не понявших большинство. Подавляющее. На этом форуме достаточно и тех, кто что-то понимает. И если верно задать вопрос, то кто-то из них даже согласится дать пояснения. Поэтому я сразу предлагаю перейти к основному вопросу: Что именно ты желаешь понять?
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...