Alexander Kuklev (akuklev) wrote,
Alexander Kuklev
akuklev

Одерский описывает, как делать безглючно обработку многоступенчатых действий пользователя. Самое распространённое многоступенчатое действие — это drag чего-нибудь мышкой. Вот например зажал кнопку мыши и рисуешь на экране ломаную, отпустил кнопку — рисование прекратилось.

Предположим у нас есть canvas, там есть поле paths, оно содержит набор ломаных (списков координат) и рисует эти ломаные на экране. Canvas волшебным образом перерисовывается сама, когда мы изменяем пути. Кроме того, у нас есть объект mouse, а у него есть источники событий mouse.move (движений мыши), mouse.down (нажатия основной кнопки), mouse.up (отпускание основной кнопки). Все события содержат координату мыши e.position в момент события e. Псевдокод обработчика действия рисования ломаной по Одерскому следующий:
on mouse.down:
  path: create Path.
  append canvas.paths: path.
  append path: [last mouse.down].position.
  repeat
    append path: [next mouse.move].position.
  until mouse.up;
  append path: [last mouse.up].position.
end
По-моему, это прекрасно.
Subscribe

  • Towards Univalent Construction Calculus

    Modern constructive Martin-Löf Type Theories (MLTTs) are exceptionally expressive and convenient languages for mathematical reasoning. By “modern”…

  • (no subject)

    Встретил фотографию толпы футбольных фанатов, и она меня скорее напугала, у меня уж точно нет желания быть там среди них. Но внезапно я понял, что…

  • Прогресс

    Десять дней назад, вторая ступень SpaceX'овского корабля Starship своим ходом слетала своим ходом на десять километров вверх, и усмепшно приземлилась…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments