Hatena::Groupnadesiko

99円のへたれ学習帳

2008-05-18

検索時に遅れを入れて体感速度を上げる

| 18:51

エディタ部品の「変更した時は~」を使って、エディタに文字が入力されたときリアルタイムに検索したい、ということが思います。しかし、単純に以下のように書くと日本語を入力した時に、一度に入力されたように見えても文字数分イベントが発生してしまいます。

テストエディタとはエディタ
これについて
	変更した時は
		# 検索処理
		「検索しました」を表示

f:id:kyuuzyuu9yen:20080518184818p:image

検索処理が軽ければ気になりませんが、重い場合は一文字ずつ引っかかるような感じになってしまいます。

こんな時は文字が入力された後、少し待ってから検索処理を行うようにするとうまくいきます。

例えばタイマーを使って以下のようにします。

テストエディタとはエディタ
これについて
	変更した時は
		検索タイマーの停止
		検索タイマーの開始

検索タイマーとはタイマー
これについて
	間隔=0.2
	時満ちた時は
		検索タイマーの停止
		# 検索処理
		「検索しました」を表示

f:id:kyuuzyuu9yen:20080518183243p:image

エディタの内容が変更されるとタイマーがリセット(初は開始)されます。エディタの内容が変更されなくなってから0.2秒経つとタイマーの「時満ちた時は~」が実行されるので、タイマーを止めてから検索処理を行います。

タイマー隔は0.1秒でも日本語対策になりますが、検索処理が重い場合は少し大きめ(0.3秒くらい)にすると処理回数が減って体感速度が上がるかもしれません。

mr-80bmr-80b2008/05/19 23:30なーるーほーどー

StickStick2013/03/04 15:16Thanks for your thoughts. It's hleepd me a lot.

lqgbrikqlqgbrikq2013/03/09 12:01NXyZir , [url=http://yoqjhxunjqdu.com/]yoqjhxunjqdu[/url], [link=http://srnqtsfbuuer.com/]srnqtsfbuuer[/link], http://hgbhihloftnt.com/

lqgbrikqlqgbrikq2013/03/09 12:01NXyZir , [url=http://yoqjhxunjqdu.com/]yoqjhxunjqdu[/url], [link=http://srnqtsfbuuer.com/]srnqtsfbuuer[/link], http://hgbhihloftnt.com/