Что это за сообщение при прокрутке мыши, когда отладчик остановлен?

проблема

Используя Director 11.5 и Windows 7, с MouseWheel Xtra (wheelmouse.zip), у меня появляется следующее сообщение в окне сообщений, когда я прокручиваю мышь, когда отладчик остановлен:

lcr_stk_PopFrame: unbalanced stk lcr_stk_PopFrame: unbalanced stk prev=1560 top=1568

Тогда, как правило, больше невозможно продолжить пошаговое выполнение кода или проверять переменные, открывать списки и т. Д. Иногда происходит сбой Директора.

Если я не прокручиваю, когда остановлен в отладчике, нет проблем. Но действительно трудно не прокручивать при отладке...

Как воспроизвести

  • создать новый фильм режиссера
  • поставить что-то на сцену
  • вставьте следующий код в сценарий фильма
  • установить точку останова в обработчике mouseDown
  • нажмите на сцену
  • прокрутите колесо мыши
  • попробуйте шаг за шагом в обработчике и откройте список в инспекторе переменных

Код Линго:

on startmovie
  put "sartWheelMouse"
  startWheelMouse()
end

on stopMovie
  put "closeWheelMouse"
  closeWheelMouse()
end 


on WheelMouseEvent (nVal)
  -- This is a workaround. Putting the param or an integer allows further operation.
  -- Without it, putting a string or even assigning a string to a var will 
  -- produce problem if user scrolls while stopped in debugger
  --put nVal

  -- this one doesn't harm
  aa = 45

  -- problem if the workaround is not present
  aa = "SAGFD"

  -- problem if the workaround is not present
  aa = string(34)

  -- problem if the workaround is not present
  put "wheelMouseEvnt enter"

end


on mouseDown me
  put "mousedown"

  -- Put a breakpoint here. THen step by step and open the list in the variable inspector
  -- Without the workaround in WheelMouseEvent, if you scroll while the debugger is stopped, 
  -- the debugger doesent work anymore, the list cannot be inspected and sometimes, Director crashes.
  a = 32
  b = "a234"

  lst = ["asdfk asldjasdflkj", "asdfk asldjasdflkj", "asdfk asldjasdflkj"]

  a = 32
  b = "a234"

end

1 ответ

Решение

У меня нет реального решения, но есть обходной путь.

Как объясняется в комментариях, просто добавьте пут с целым числом в обработчике WheelMouseEvent, и проблема исчезнет.

put nVal 

Если кто-то найдет другое решение, более дискретное, чем заполнение окна сообщения, мне будет интересно.

Другие вопросы по тегам