0

状況:私はViewStack2人の子供(両方ともタイプPanel)を持っています。アプリケーションは、子1をとして開始しますSelectedChild

ボタンをクリックすると、子2がSelectedChildになります。その後、SelectedChildである子1に戻ります。

Flash PlayerをクリックShow Redraw Regionsすると、子2がずっと再描画されているのがわかります(子2には動くオブジェクトがいくつかあります)。どうすればこれを防ぐことができますか?または、これは、非表示の(この場合は子2)子を実際に削除することによってのみ実行できますか?

なぜ私はこれを達成したいのですか?子2にはかなりの量のデータ(flv、画像など)が含まれ、現在のようにキャッシュされていると、アプリケーションの速度が低下します。

4

2 に答える 2

1

Flash の非効率性の主な原因は、表示リスト上の非表示オブジェクトにある可能性があります。再描画領域のリフレッシュ (「赤い四角形」) を引き起こし続けるだけでなく、プレーヤーがディスプレイ リスト ツリーをトラバースする必要があるときはいつでも、Flash 処理に CPU ペナルティを課します。表示リストが大きい場合、MouseEvent リスナーがなくても、マウスオーバーは著しくコストがかかります。数千を超えるオブジェクトを含む表示リストは、苦痛を感じ始める可能性があります。

簡単に言えば、DisplayObject.visible をトグルする代わりに、独自の「可視性マネージャー」を記述して、親階層の内外でオブジェクトを交換する必要がある場合があります。

于 2010-11-18T01:45:34.313 に答える
0

私はそれを理解しました:唯一の方法は、実際に子を削除するか、移動/アニメーションコンテンツです。

アマーゴッシュが言及video.stop()したように、呼び出しも役立つはずです。animation.stop()

于 2009-12-08T15:39:33.660 に答える