0

私は Box2D を初めて使用し、Box2DWeb と共に EaselJS を使用する最初のプロジェクトに取り組んでいます。世界の壁と床を構成する標準の静的形状を、サイズ変更時にブラウザー ウィンドウと共に移動/更新することを望んでいます。私はそれを達成するために SetPosition を使用しています。これは、Easel の tick メソッドを実行するたびに呼び出されます。ほとんど機能しています。ブラウザーを大きくすると、すべてが期待どおりに機能します。床が下がり、それに応じて動的オブジェクトが下がります。

ただし、ブラウザーが小さくされると、シーン内のボディは、静的な床のボディを突き抜けて消えてしまうことがよくあります。問題のダイナミック ボディが一時的にウィンドウ ビューの外に出てしまうほどサイズ変更が重要な場合にのみ発生するようです (たとえば、高さを下げるとブラウザ ペインの下に完全に移動します)。ただし、ブラウザのサイズをかなりゆっくりと変更すると...奇妙なことに、機能します。

私の問題に対する良い解決策は思い浮かびません。また、ウェブ上で動作の例を見つけることができませんでした。それはできますか?ご協力いただきありがとうございます。

リー:

まったく - 返信ありがとうございます。これは backbone.js プロジェクトです。例はここで見ることができます:

http://kensonger.com/b2dweb/

基本的なウィンドウ サイズ変更リスナーは、ファイルの下部にあります。

/b2dweb/js/routers/Main.js

... app.box2d を参照します。これがバックボーン ビューです。

/b2dweb/js/views/Box2DView.js

「onStageResize」メソッドは、ワールド境界を配置しています。このクラスの一番下にある update メソッドは、/b2dweb/js/routers/Main.js の tick メソッドを介して 45/sec と呼ばれます。

作業全体の zip がここに圧縮されています。

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

ブラウザ ペインのサイズをすばやく上向きに変更し、次に下向きにすばやく変更すると、box2d/easel オブジェクトが床を通過するのがわかります。下方向にサイズ変更しないと、オブジェクトは通り抜けて消えてしまいます。ただし、そうすると、床がもう一度通過し、落下物をキャッチします。

繰り返しますが、洞察に感謝します-大歓迎です。

4

1 に答える 1

0

さて、私はちょうど今それが機能しているように見えます-私は各世界の境界を1000ピクセルの厚さに相当させ、インスタンス化されたときに各要素に対してSetActive(true)を呼び出します。どの変更がうまくいったかはわかりませんが、それはSetActiveの呼び出しだと思います。

http://kensonger.com/b2dweb/

誰かがより良い解決策を知っているなら、それを投稿してください、そして私はそれを試してみます...

于 2013-02-21T01:37:04.473 に答える