«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2018/12/05 11:18:22  №1306344 1
screencap.gif (954, 611x377)
377x611
/web совсем помер. Спрошу сдесь.

С помощью чего можно сделать выбор строки, программно прокручивать текст и выделять нужную, как на рисунке.
Ответы: >>1306382
Аноним 2018/12/05 12:05:40  №1306382 2
>>1306344

А какой язык программирования и какую платформу ты используешь для написания приложения?

Если HTML/JS то для прокрутки есть методы DOM:

https://developer.mozilla.org/ru/docs/Web/API/Element/scrollTop
https://developer.mozilla.org/ru/docs/Web/API/Window/scroll

Подсветку строки можно делать по-разному. Можно каждую строку программы сделать отдельным элементом DOM и добавлять ей CSS класс. Можно изловчиться и сделать один элемент DOM в виде прямоугольника с подсветкой и один блок текста и перемещать его к нужной строке.

Имей в виду, что если у тебя большой текст, и ты каждую строку делаешь элементом DOM, то вставка в DOM десятков тысяч элементов DOM может подвесить браузер. Может понадобиться оптимизировать код, например, создавая элементы только по мере прокрутки.
Ответы: >>1306399
Аноним 2018/12/05 12:50:47  №1306399 3
>>1306382
> А какой язык программирования и какую платформу ты используешь для написания приложения?
Голый JavaScript и HTML. Браузер хром.

Дизассемблированный код пихается в блок div у которого overflow-y: scroll
Каждая строчка это div в котором ещё 5 дивов. Адрес, мнемоника и аргументы
> scrollTop
Это я нашёл. Но как вычислять чему этот scrollTop равен к примеру для 4 строчке.

> Подсветку строки
Это буду делать изменяя background-color дива

> Имей в виду, что если у тебя большой текст
Адресное пространство от 0 до 0хfff
т.е. максимальное число строк 4095
Но по факту будет меньше, поскольку часть памяти идёт на видеобуфер, часть под переменные.

Главная функция эмулятора дёргается каждые 16мс. Если с таким интервалом менть css свойства браузер нормально будет отрабатывать?
Ответы: >>1329862
Аноним 2019/01/19 02:02:31  №1329862 4
>>1306399

> Дизассемблированный код пихается в блок div у которого overflow-y: scroll
> Каждая строчка это div в котором ещё 5 дивов. Адрес, мнемоника и аргументы

Создавать 4 000 дивов - это плохая идея, будет тормозить. Надо либо использовать канвас, либо убирать невидимые /добавлять видимые дивы при прокрутке, либо просто вставлять текстом, а полоску сделать отдельным дивом.

> Это я нашёл. Но как вычислять чему этот scrollTop равен к примеру для 4 строчке.

Если высота одной строки известна, и нет переносов строк, то это не сложно.

> Главная функция эмулятора дёргается каждые 16мс. Если с таким интервалом менть css свойства браузер нормально будет отрабатывать?

Надо тестировать, но думаю, что не очень. Это будет отнимать больше времени, чем сама эмуляция. Перерисовка DOM - это ведь сложный процесс, там много тонкостей и сложностей. Тут можно было бы использовать канвас и самому вычислять, что надо перерисовать, но еще лучше будет снизить частоту обновления. Какой смысл обновлять код с такой скоростью, если человек не способен его читать? Я бы вообще отключил обновление кода во время выполнения.

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

Также, если ты пишешь на JS, обрати внимание на WebAssembly. Это позволяет писать програмы на ассемблере (естественно, не руками, а используя высокоуровневый язык и компилятор). Это позволит достичь максимально возможной скорости эмуляции, быстрее чем JS.