Я новичок в Box2D и работаю над первым проектом, используя EaselJS вместе с Box2DWeb. Я надеюсь, что стандартные статические формы, составляющие стены и пол мира, будут перемещаться/обновляться вместе с окном браузера при изменении его размера. Для этого я использую SetPosition, который вызывается при каждом выполнении метода тика Easel — и он почти работает. При увеличении размера браузера все работает как положено - пол опускается и динамические объекты соответственно падают.
Однако, когда размер браузера уменьшается, кажется, что тела в сцене часто проваливаются сквозь статичное тело пола и исчезают. Кажется, это происходит только в том случае, если изменение размера достаточно велико, чтобы динамическое тело, о котором идет речь, ненадолго опускалось за пределы вида окна (например, полностью под панелью браузера при уменьшении высоты). Однако, если я изменяю размер браузера достаточно медленно... как ни странно, это работает.
Я не могу придумать хорошего решения своей проблемы, и мне не повезло найти пример поведения в Интернете. Можно ли это сделать? Очень благодарен за любую помощь.
Ли:
Абсолютно - большое спасибо за ответ. Это проект backbone.js. Пример можно увидеть здесь:
Базовый прослушиватель изменения размера окна находится внизу файла:
/b2dweb/js/маршрутизаторы/Main.js
... он ссылается на app.box2d. Это основной вид здесь:
/b2dweb/js/представления/Box2DView.js
Метод onStageResize устанавливает границы мира. Метод обновления в нижней части этого класса называется 45/сек через метод tick в /b2dweb/js/routers/Main.js.
Почтовый индекс всех усилий заархивирован здесь:
http://kensonger.com/b2dweb/box2d_experiment.zip
Вы можете увидеть объекты box2d/easel, проходящие сквозь пол, если вы быстро увеличите панель браузера вверх, а затем снова быстро уменьшите. Если вы не уменьшите размер, объекты просто провалятся и исчезнут. Однако, если вы это сделаете, пол снова пройдет сквозь него и поймает падающие предметы.
Еще раз, спасибо миллион за любые идеи - очень признателен.