トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     XMLで読み込んだテキストが改行されない
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ゲスト
Åê¹ÆNo.12832
投稿日時: 2004-11-29 19:54
XMLで読み込んだテキストが改行されない
いつも勉強させてもらってます。

xmlObj = new XML();
xmlObj.ignoreWhite = true;
xmlObj.load("sample.xml");

上記のように、読み込んだXMLからテキストを表記しているのですが、\nを組み込んでも、FLASH側の表示で改行されません。

フレームにaaa.text = "テキストがはいります\nここで改行"

と書くと改行されるのですが。

何でかわからないんですけど、どなたか教えてください。
よろしくお願いします
空野大二郎
Åê¹ÆNo.12843
投稿日時: 2004-11-29 23:43
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: XMLで読み込んだテキストが改行されない
 まいど。

 わたし自身、XMLを扱った経験がないのですが、気になったので
少し調べてみました。

//読み込んだテキストノードの値が下記のようだとします。
theNode_str = "テキストがはいります\nここで改行";

trace(theNode_str.indexOf('\n')); //「-1」と表示(見つからない)
trace(theNode_str.indexOf('\\n')); //「11」と表示

 (読込元のxmlファイル:Unicode UTF-8)


 単純に、「\n」がエスケープされた状態で読み込まれていたようです。
 いちおう、読み込んだあとのテキストノードを解析して、
'\\n'を'\n'に置き換えると、改行されるようになります。

 わたしではFlashでのXMLの改行の扱いを適切に説明できないので、
そのあたりは他の経験者の方にお任せします。


----------------
空野 大二郎 アニメーター作家
桜の道

Sif
Åê¹ÆNo.12844
投稿日時: 2004-11-29 23:55
半人前
居住地: たこ焼き王国
投稿: 36
使用環境:
XP SP2 Home
Pro 7.2
Re: XMLで読み込んだテキストが改行されない
こんにちは。

自分も少し前にこの件で苦しんだひとりなのですが、
その際は、xmlの中に改行コード[\n]を入れるのではなく、
<line01>一行目のテキスト</line01>
<line02>二行目のテキスト</line02>
…

のようにxmlに記述して読み込み、それをActionScriptを用いて
myTextField.text = 一行目のテキスト + newline + 二行目のテキスト

のように処理しました。

もっと良い方法があれば、よろしくお願いします?
ゲスト
Åê¹ÆNo.12845
投稿日時: 2004-11-30 0:07
Re: XMLで読み込んだテキストが改行されない
返信ありがとうございます。

>>空野大二郎さん

「\n」がエスケープされるというのは、\nが改行コードだからでしょうか?それと\\nを\nに置き換える方法を教えてもらえるとうれしいのですが。(ノードの内容に\\nはたくさんある状態です。)
スクリプトを考えたのですが、方法が考えつかないんです。すみません。


>>Sifさん

newlineで改行を行う方法ですが、「phpでXMLを生成&他人が扱う場合もあり」な状態なので、newlineが使えないと考えています。
Sif
Åê¹ÆNo.12847
投稿日時: 2004-11-30 2:57
半人前
居住地: たこ焼き王国
投稿: 36
使用環境:
XP SP2 Home
Pro 7.2
Re: XMLで読み込んだテキストが改行されない
二度目まして

 (当文章の"\"は、"円マーク"に読み替えてください)

XMLに記述されたテキストの"\n"が、読み込み後に
"\\n"となってしまい、改行してくれないという件に関しては、
下記の通りで"\\n"を強引に改行させることができました。
/**
* "\\n"を強引に改行させるスクリプト
*/
var load_str:String = <ココに読み込んだXMLテキスト>;
var index_num:Number = load_str.indexOf("\\n");
// "\\n"がなくなるまで"\\n"をnewlineに変換
while (index_num != -1) {
    var first_str:String = load_str.substring(0, index_num);
    var length_num:Number = "\\n".length;
    var second_str:String = load_str.substring(index_num + length_num);
    load_str = first_str + newline + second_str;
    index_num = load_str.indexOf("\\n");
}

試してみてください。
また、上記のASが最良の記述かどうかは分かりませんが、
これを解読することでHNaokiさんが少しでもステップアップできれば、と思います。
 (私なぞどうぞ踏み台にしてください )

それでは、うまく動作することを祈っております。
 (深夜なので、ボケてたらスイマセン…)
空野大二郎
Åê¹ÆNo.12849
投稿日時: 2004-11-30 6:43
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: XMLで読み込んだテキストが改行されない
 まいど。

 ActionScriptで文字列の置換のやり方があったので、そいつを
紹介します。

//convSentence(変換する文字列, 検索する文字, 置換する文字)
this.convSentence = function (theStc, oldKey, convKey) {
  var sentence_array = new Array();
  sentence_array = theStc.split(oldKey);
  return sentence_array.join(convKey);
};
 
//テキストノードの中身が下記のような状態とします。
outstr_str = "テキストがはいります\\nここで改行"; 
 
outstr_str = convSentence(outstr_str, "\\n", "\n");
trace('outstr_str=' + outstr_str);


 XMLからのテキストノードは「\n」がエスケープされていることが
分かったのですから、それを置換する方法ならネット上で見つかる
可能性があります。

 ご質問される前に、検索(FLASH-JP.COM以外も)されることをオススメします。
 今回の件は某googleを使い、「actionscript 置換」で検索可能でした。
(わたしが使っていた自作関数よりも格段汎用性のあるものが!!
引用:
HNaokiさんは書きました:
スクリプトを考えたのですが、方法が考えつかないんです。すみません。


----------------
空野 大二郎 アニメーター作家
桜の道

Sif
Åê¹ÆNo.12905
投稿日時: 2004-12-1 2:34
半人前
居住地: たこ焼き王国
投稿: 36
使用環境:
XP SP2 Home
Pro 7.2
Re: XMLで読み込んだテキストが改行されない
こんにちは。

空野さん、フォローありがとうございます。
[さぶすとりんぐ]する必要が全くありませんでしたね…
「げっ!」と思い、会社の自分のASをなおそうと見直してみたら、
見事に空野さんの方法[split -> join]で書かれており、自分の
記憶力のなんたるかを感じてしまいました

身に付いてね?
野中文雄
Åê¹ÆNo.12907
投稿日時: 2004-12-1 5:15
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: XMLで読み込んだテキストが改行されない
ご参考までに。

ActionScript 1.0:「Stringオブジェクトにメソッド追加」(3.2)
ActionScript 2.0:「サブクラスの作成」(1-3)
引用:
空野大二郎さんは書きました:
 ActionScriptで文字列の置換のやり方があったので、そいつを
紹介します。
[code]//convSentence(変換する文字列, 検索する文字, 置換する文字)
this.convSentence = function (theStc, oldKey, convKey) {
// var sentence_array = new Array();
var sentence_array = theStc.split(oldKey);
return sentence_array.join(convKey);
};

ところで、もともとのご質問について。XMLのテキストを直接改行したのでは、問題があるのでしょうか?


----------------
 

ゲスト
Åê¹ÆNo.12910
投稿日時: 2004-12-1 9:01
Re: XMLで読み込んだテキストが改行されない
>>sifさん、空野大二郎さん

返信遅くなってすみません。やっと解決しました。
問題の置換部分ですが、ソースをみてなるほどと思っちゃいました。
「FLASHで困ったことがあれば、FLASH-JP」と自分で思いこんでいたところがあるので、他サイトでも検索することを忘れていました。これからは、気をつけたいと思います。ありがとうございました。

>>野中文雄さん

たしかにXMLのテキストを直接改行するば、そのまま改行されるわけですが、
もし直接XMLを編集しなくてはならなくなった場合、XMLが増えれば増えるほど、
私の場合は、ミスが出そうで(改行を消してしまうとか)、「文章中の改行」と「XMLの改行」に分別をつけたいという思いがありましたのでこのような仕様で作りたかったのです。私仕様というところでしょうか。すみません。
空野大二郎
Åê¹ÆNo.12911
投稿日時: 2004-12-1 9:27
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: XMLで読み込んだテキストが改行されない
 まいど。
 HNaokiさん、解決おめでとうございます。

 紹介させていただいた文字の置換は、昨日知ったばかりでした。
 野中文雄さんの紹介されている「Stringオブジェクトにメソッド追加
(3.2)を今日知って、さらにびっくりです。
 HNaokiさん、お互いがんばりましょう。

 Sifさん、わたしなんてもっとひよっこですよ。
引用:
Sifさんは書きました:
「げっ!」と思い、会社の自分のASをなおそうと見直してみたら、
見事に空野さんの方法[split -> join]で書かれており、自分の
記憶力のなんたるかを感じてしまいました


 野中さん、ありがたく参考にさせていただきます。
引用:

野中文雄さんは書きました:
ご参考までに。

ActionScript 1.0:「Stringオブジェクトにメソッド追加」(3.2)
ActionScript 2.0:「サブクラスの作成」(1-3)


----------------
空野 大二郎 アニメーター作家
桜の道

(1) 2 3 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops