2012-02-20 7 views
1

私はJavaScriptに実際にコードする方法がわからない問題に遭遇しました。物事は、私は配列に追加された多くのオブジェクトを作成することができるようにしたいと思います。オブジェクトがこの配列に追加されるように作成されるとき、それらは "生涯"を持ちます。この寿命がなくなると、このオブジェクトはアレイから削除されます。Javascript、生涯設定されたオブジェクト?

ここで構築しようとしているのは、問題の粒子の寿命が切れた後にパーティクルがレンダリングされなくなるパーティクルシステムです。

いいアイデアや例がありますか?

私はsetTimeoutsetIntervalおよびclearIntervalを使用することを考えましたが、これがどのように最も効果的であるかはわかりません。

+0

あなたはいくつかの境界を提供できますか?オブジェクトの最大数または最短ライフタイム? 1つのアイデアは、優先順位キューを使用し、最初の 'n'要素を期限切れにして削除するか定期的にテストすることです。 –

答えて

1

のようなものthis?フェリックスクリングため

更新:

var a = [], next = function() { 
    a = a.slice(0,-1); 
    document.body.innerHTML += a.length + "<br />"; 
    if (a.length != 0) 
     setTimeout(next, 100); 
}; 
for (var i = 0; i < 100; i++) { 
    a.push({hi: 1}); 
} 
setTimeout(next, 100);​ 
+0

要素の数によっては、単一の要素ごとに 'setTimeout'を作成するのは良い考えではありません。ブラウザにパフォーマンスに影響を与えます。 –

+0

パフォーマンスは常に考慮する必要があります;)質問に私のコメントで他のアイデアを提供しました。 –

+0

あなたは今幸せですか? – noob

1

あなたはミカのコードサンプルを使用することができます。 「次の」関数の呼び出しごとに、パーティクルの状態(位置、速度など)を更新することができます。また、パーティクルの作成時間と、現在の時間から生成時間を引いたものが一定の定数を超えている場合は、「次の」コールチェックごとに追跡することができます。アニメーションの品質に応じて、タイムアウトの時間を短縮することができます。 setTimeout(next, 25); 幸運:)

関連する問題