wise9/enchant.js

Rendering longer text in Label

Closed this issue · 1 comments

画面に収まらない長いテキストを描画するとレンダリングが重くなります。

developers/eventViewer のサンプルで、タッチしたままぐるぐる回してるとすぐに再現できます。

現状の実装だと、Label#textに文字列がセットされたタイミングで文字列をbrタグで分割し、
描画のタイミングで行がLabelの幅を超える場合はさらに行を分割して描画します。
描画のタイミングで都度行なっている幅チェックをLabel#textのセットのタイミングで行うことは可能かもしれませんが、
上記のサンプルのようにタッチイベントごとに大量のテキストが変更される場合は、
行分割も幅チェックも毎フレーム数回行うことになりうるのであまり効果はないと思います。
描画直前のrenderイベントで前処理をすることで最悪毎フレーム1回の処理で済むようにした上で、
画面外への描画をスキップするような処理を追加する必要がありそうです。

いずれにせよ、無限の長さの文字列描画をサポートできることはないので、 95b0d3c のように、
使用する側がある程度気を使う必要があると思います。