【发布时间】:2013-02-21 09:37:04
【问题描述】:
我是 Box2D 的新手,正在使用 EaselJS 和 Box2DWeb 进行第一个项目。我希望拥有包含世界墙壁和地板的标准静态形状,以便在调整大小时与浏览器窗口一起移动/更新。我正在使用 SetPosition 来完成它,每次执行 Easel 的 tick 方法时都会调用它——它几乎可以工作了。当浏览器变大时,一切都按预期工作 - 地板降低,动态对象相应下降。
但是,当浏览器变小时,场景中的身体似乎经常会直接穿过静态地板身体并消失。似乎只有在调整大小足以导致相关动态主体短暂下降到窗口视图之外(例如,在降低高度时完全低于浏览器窗格)时才会发生。但是,如果我相当缓慢地调整浏览器的大小......奇怪的是它可以工作。
我想不出任何好的解决方案来解决我的问题,而且我也没有运气在网络上找到该行为的示例。可以做到吗?非常感谢您的帮助。
李:
当然 - 非常感谢您的回复。这是一个backbone.js 项目。这个例子可以在这里看到:
基本的窗口调整大小监听器位于此处文件的底部:
/b2dweb/js/routers/Main.js
...它引用了 app.box2d。这是这里的主干视图:
/b2dweb/js/views/Box2DView.js
'onStageResize' 方法用于定位世界边界。该类底部的更新方法通过 /b2dweb/js/routers/Main.js 中的 tick 方法调用 45/sec。
整个工作的压缩包都在这里:
http://kensonger.com/b2dweb/box2d_experiment.zip
如果您快速向上调整浏览器窗格的大小,然后再快速向下调整,您可以看到 box2d/画架对象穿过地板。如果你不向下调整大小,对象就会掉下来并消失。但是,如果您这样做,地板会再次穿过并接住掉落的物体。
再次感谢您提供任何见解 - 非常感谢。
【问题讨论】:
-
可能显示一些你的代码?
-
感谢李先生的快速回复!我已经编辑了上面的帖子以提供代码示例。唯一相关的位在 Main.js 和 Box2DView.js 中 - 如果有什么不明白的地方,请告诉我。