使用窗口调整大小更改世界边界

时间:2013-02-20 04:07:13

标签: box2d easeljs box2dweb

我是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 /秒。

整个努力的拉链在这里压缩:

http://kensonger.com/b2dweb/box2d_experiment.zip

如果您快速调整浏览器窗格的大小,然后再快速向下调整,则可以看到box2d /画架对象穿过地板。如果你没有向下调整大小,那么对象就会掉落并消失。但是,如果你这样做了,那么地板会再次穿过并抓住落下的物体。

再次感谢百万分之一的任何见解 - 非常感谢。

1 个答案:

答案 0 :(得分:0)

嘿,看起来我刚刚开始工作了 - 我使每个世界边界相当于1000像素厚,并且每个元素都调用SetActive(true),因为它已经实例化了。我还没有确定哪个改变了,但我认为这就是SetActive调用。

http://kensonger.com/b2dweb/

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