サイトトップ

Director Flash 書籍 業務内容 プロフィール

Macromedia Flash非公式テクニカルノート

\r\nが改行コードとして認識されない

ID: FN0512003 Product: Flash

Platform: Mac OS X
Version: 8

問題
Flash 8/Mac OS Xで確認されました。"\r"(CR)や"\r\n"(CR+LF)が、テキストの改行コードとして認識されません。

たとえば、つぎのスクリプト(図001)を実行したとき、期待されるのは以下のような[出力]です。

   line0
   line1
   =====
   line0

図001■文字列に改行コードを挿入して改行コードで配列に分ける
スクリプト

ところが、文字列に挿入した"\n"は改行コードと認識されないため、そのまま文字として[出力]されます。newline定数を使えば文字列に改行が加えられるものの、String.split()メソッドに区切り文字として"\r"を指定しても、配列エレメントに分けることができません(図002)。

図002■"\n"や"\r"が改行コードとして認識されない
\n\rの認識

原因
Flash 8/Mac OS Xでは、円記号(\)がエスケープ文字として認識されないようです[*1]。

[*1] Flash MX 2004以前でも、類似の問題が報告されていました。「アクションパネルでダブルクォーテーションがエスケープできない」、F-site「MX形式で保存するとエスケープ記号が変わる[MX 2004/OS X]」をご参照ください。

対処法
エスケープ文字として半角バックスラッシュ(\)を使います。2点注意があります。

図003■[アクション]パネルの[フォント]設定
アクションパネル設定

第1は、[アクション]パネルで使用する[フォント]です。デフォルトの[Osaka−等幅]を選択していると(図003)、スクリプトペインや[出力]パネルで、半角バックスラッシュ(\)が全角(\)であるかのように表示されます(図004)。

図004■半角バックスラッシュ(\)と全角バックスラッシュ(\)の表示
バックスラッシュの表示

したがって、バックスラッシュを正しく識別するには、Flash MX 2004と同じく、フォントに[Monaco]を選択しておく方がよいでしょう。

図004■[Monaco]に設定した[アクション]パネルの表示
Monacoの表示

第2は、改行コードの処理を行っている他のバージョンやプラットフォームのFlashファイルを、Flash 8/Mac OS Xで開いた場合の動作です。まず、Windows版のFlashファイルで、円記号(\)をエスケープ文字として用いていた場合、Flash 8/Mac OS Xでは半角バックスラッシュ(\)として表示されます。つまり、エスケープ文字としては正しく認識されるようです。

つぎに、Flash MX 2004/Mac OS XのFlashファイルの場合には、エスケープ文字の円記号(\)はそのままスクリプトペイン内に表示されます。そして、パブリッシュ設定がFlash Player 7だったとしても、エスケープ文字として認識されなくなりました。なお、Flash MX/Mac OS XのFlashファイルでは、エスケープ文字が半角バックスラッシュで表示され、正しく処理されました[*2]。

[*2] 前掲注[*1]の「MX形式で保存するとエスケープ記号が変わる」で確認されたのは、Flash MX 2004からMXにスクリプトを移行すると、円記号(\)がエスケープ文字として正しく認識されないということでした。どうも、Flash MX 2004以降から、スクリプトペイン内のテキストの扱いが変わったように思われます。

_____

作成者: 野中文雄
作成日: 2005年12月17日


Copyright © 2001-2006 Fumio Nonaka.  All rights reserved.