Home > ActionScript3.0 | Progression > collectBreakを思いっきりスルーしてました

collectBreakを思いっきりスルーしてました

昨日の夜のこと

northprintさまとメッセをしていたら、StringUtilクラスのcollectBreakを思いっきりスルーしていたことに気がつきまして…

以下メッセの内容を簡単に…

(northprintさん)使ってみたんですけど、StringUtilクラスのcollectBreakって、凄いですよね~!

(flabaka)まだ触ってないです…

(northprintさん)Windowsで、改行がCR+LF形式で保存されたデータを読み込む際の(改行が2行になっちゃう)バグを取ってくれますよ~

(flabaka)それは凄い…

と、まぁ、こんなやり取りがありまして…

あれっ? でもStringUtilクラスって、僕、数日前にエントリしたよなぁ…。collectBreakなんてあったかなぁ…

で、数日前のエントリ(StringUtilクラスを使ってみる)を見てみたら…

collectBreak、思いっきりスルーしていました!

ってな訳で、(僕一人で悦に入ってても意味がないので)今日はcollectBreakを使ってみました! というエントリです。

テキストを用意する

読み込むテキストを用意します。

あいうえお

かきくけこ

さしすせそ

このデータを、エンコードをUTF8。改行方法をCR+LFで保存しておきます。

Progressionで外部テキストを読み込んでみる

何通りか方法があると思いますが、今回はURLLoaderを使ってみました。

private var txt:TextField;
txt = new TextField();
txt.autoSize = TextFieldAutoSize.LEFT;
txt.width = 200;
txt.setTextFormat( new TextFormat(null,20));
addChild(txt);
(略)
var loader:URLLoader = new URLLoader(new URLRequest("sample.txt"));
loader.addEventListener(Event.COMPLETE,function(e:Event):void{
  txt.text = loader.data;
});

これを実行すると、こんな感じになります。

CR+LF形式をそのまま読み込んだ場合

テキスト側では改行が1行なのに、読み込んでみたら改行が2行になっています…

collectBreakを使ってみる

そこで、collectBreakの出番です!

private var txt:TextField;
txt = new TextField();
txt.autoSize = TextFieldAutoSize.LEFT;
txt.width = 200;
txt.setTextFormat( new TextFormat(null,20));
addChild(txt);
(略)
var loader:URLLoader = new URLLoader(new URLRequest("sample.txt"));
loader.addEventListener(Event.COMPLETE,function(e:Event):void{
  //collectBreakを適用させる
  var mytxt:String = StringUtil.collectBreak(loader.data);
  //collectBreakを適用させたデータを、テキストフィールドに
  txt.text = mytxt;
});

これを実行してみると…

CollectBreakを適用させた場合

テキスト通りに改行が1行になってくれました!

試しに、先のテキストデータをエンコードUTF8。改行方法をCRのみで保存(sample2.txt)して、以下のコードを実行してみると…

private var txt:TextField;
txt = new TextField();
txt.autoSize = TextFieldAutoSize.LEFT;
txt.width = 200;
txt.setTextFormat( new TextFormat(null,20));
addChild(txt);
(略)
var loader:URLLoader = new URLLoader(new URLRequest("sample2.txt"));
loader.addEventListener(Event.COMPLETE,function(e:Event):void{
  txt.text = loader.data;
});

テキストデータと同じく、改行は1行で表示されました。

どうやら、CR+LF形式で保存した場合のみの現象(バグ)みたいですね。

CR+LF形式で保存されたテキストデータを読み込む際には、collectBreakを使ってあげると良さそうです~!

Comments:0

Comment Form
Remember personal info

Trackbacks:1

Trackback URL for this entry
http://flabaka.com/blog/wp-trackback.php?p=409
Listed below are links to weblogs that reference
collectBreakを思いっきりスルーしてました from flabaka
pingback from blog.progression.jp» ブログアーカイブ » [お知らせ] 今週の Progression 関連エントリー(2009/01/24 ~ 2009/02/16) 09-02-07 (土) 2:36

[...] flabaka / collectBreakを思いっきりスルーしてました [...]

Home > ActionScript3.0 | Progression > collectBreakを思いっきりスルーしてました

Search
Feeds
Meta

Return to page top