Что это за сообщение при прокрутке мыши, когда отладчик остановлен?
проблема
Используя 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
Если кто-то найдет другое решение, более дискретное, чем заполнение окна сообщения, мне будет интересно.