【问题标题】:Change world boundaries with window resize通过窗口调整大小改变世界边界
【发布时间】:2013-02-21 09:37:04
【问题描述】:

我是 Box2D 的新手,正在使用 EaselJS 和 Box2DWeb 进行第一个项目。我希望拥有包含世界墙壁和地板的标准静态形状,以便在调整大小时与浏览器窗口一起移动/更新。我正在使用 SetPosition 来完成它,每次执行 Easel 的 tick 方法时都会调用它——它几乎可以工作了。当浏览器变大时,一切都按预期工作 - 地板降低,动态对象相应下降。

但是,当浏览器变小时,场景中的身体似乎经常会直接穿过静态地板身体并消失。似乎只有在调整大小足以导致相关动态主体短暂下降到窗口视图之外(例如,在降低高度时完全低于浏览器窗格)时才会发生。但是,如果我相当缓慢地调整浏览器的大小......奇怪的是它可以工作。

我想不出任何好的解决方案来解决我的问题,而且我也没有运气在网络上找到该行为的示例。可以做到吗?非常感谢您的帮助。

李:

当然 - 非常感谢您的回复。这是一个backbone.js 项目。这个例子可以在这里看到:

http://kensonger.com/b2dweb/

基本的窗口调整大小监听器位于此处文件的底部:

/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 中 - 如果有什么不明白的地方,请告诉我。

标签: box2d easeljs box2dweb


【解决方案1】:

嗯,嘿,看起来我现在才刚刚开始工作 - 我将每个世界边界设置为 1000 像素厚,并且在实例化每个元素时我调用 SetActive(true)。我还没有确定是哪个更改起作用了,但我认为是那个 SetActive 调用。

http://kensonger.com/b2dweb/

如果有人知道更好的解决方案,请随时发布,我会尝试...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多