2013-02-20 34 views
0

我是Box2D的新手,在使用EaselJS和Box2DWeb的第一個項目上工作。我希望在調整大小時,讓包含世界牆壁和地板的標準靜態形狀隨瀏覽器窗口一起移動/更新。我使用SetPosition來完成它,每次執行Easel的tick方法都會調用它 - 並且它幾乎可以工作。當瀏覽器變大時,一切都按預期工作 - 地面降低,動態物體也隨之下降。用窗口調整世界的界限resize

但是,當瀏覽器變得更小時,場景中的物體似乎經常會穿過靜態的地板本體而消失。它只有在調整大小足以導致有問題的動態主體短暫下降到窗口視圖外時纔會發生(例如,在降低高度時完全位於瀏覽器窗格下方)。如果我合理調整瀏覽器的大小,但是......奇怪的是,它可以工作。

我可以想到沒有好的解決方案,我的問題,我沒有任何運氣找到一個在網絡上的行爲的例子。可以做到嗎?非常感謝任何幫助。

李:

絕對 - 感謝這麼多的答覆。這是一個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 /畫架對象,如果您快速向上尺寸瀏覽器窗格,然後再向下迅速。如果你不向下調整大小,物體會落下並消失。但是,如果你這樣做,地板再次通過並且抓住掉落的物體。

再次感謝百萬人的任何見解 - 非常感謝。

+0

顯示一些代碼的可能? – 2013-02-20 04:25:06

+0

感謝您的快速回復李!我已經編輯了我的帖子,上面提供了代碼示例。唯一相關的位在Main.js和Box2DView中。JS - 如果有什麼不合理的,請讓我知道。 – gomper 2013-02-20 08:55:56

回答

0

好吧,看起來我現在已經開始工作了 - 我將每個世界的邊界等於1000像素厚,每個元素在實例化時調用SetActive(true)。我還沒有確定做了哪些改變,但我認爲這是SetActive調用。

http://kensonger.com/b2dweb/

如果有人知道一個更好的解決方案,請隨意張貼它,我會嘗試一下...