プロが教えるわが家の防犯対策術!

FLASH8(Win-XP)使用者です。
書き込みサイトを作っているのですが、その中で「改行」を禁止したいと考えています。
いったん受け取った文字列から改行を削除するのはわかりますが、「テキスト入力」の入力ボックスの表示の時点で「リターンキー」を押しても反応させないようにするにはどうしたらいいのでしょうか?

お詳しい方、よろしくお願いいたします。

A 回答 (1件)

テキストボックス というのは,


テキストフィールドと解釈して回答します。

ステージ上に 「テキスト入力」 のテキストフィールドを作成すると,
デフォルトでは 行タイプ が「単一行」 になると思います。
そのままのデフォルトだと改行は入らないと思いますが,この「単一行」設定ではダメなのでしょうか?

プロパティインスペクタで,
テキスト入力のテキストフィールドに設定できる 行タイプ の一覧を書いておきますと,
上から 「単一行」,「複数行」,「折り返しなし」,「パスワード」 です。
普通は,この一番上の 「単一行」 にします。


=====================

それとも,行タイプ の設定が 「単一行」 ではなく,
「複数行」 なのに,リターンキーで改行を入れないようにするというご質問でしょうか?

しかし,これは難しいですね。
テキストフィールド の restrict プロパティ で指定してやればできそうな気がしましたが,
しかし 「改行」 に限っては入力できてしまいます。
例えば,
テキストフィールドに my_txt というンスタンス名を付けて,
そのテキストフィールドが存在するフレームの空白キーフレームに次のように書いても無効でした。

my_txt.restrict = "^\u000A ^\u000D";

---改行以外についての参考URL↓---

Flashドキュメンテーション (ヘルプ)
「restrict (TextField.restrict プロパティ) 」
http://livedocs.adobe.com/flash/8_jp/main/000027 …

ASCIIコード表
http://homepage2.nifty.com/bkclass/doc_ascii.html



これは手強いですね。
そうなると,
強引ですが,強制的に改行コードを取ってしまいましょう。

テキストフィールドに my_txt というンスタンス名を付けて,
そのテキストフィールドが存在するフレームの空白キーフレームに書くスクリプトです。

----------------------------------------
// テキストフィールド の内容が変わったら
my_txt.onChanged = function(TF:TextField) {
// テキストフィールド内の改行を削除
my_txt.text = TF.text.split("\n").join("").split("\r").join("");
};
----------------------------------------


最初は,
テキストフィールド内の文末の改行コードのみを取ろうかと思ったのですが,
それだと,メモ帳などテキストエディタに下書きした物をコピペされると,
その改行は残ってしまうので,全ての改行を削除するという強引な方法にしました。

Flashドキュメンテーション (ヘルプ)
onChanged (TextField.onChanged ハンドラ)
http://livedocs.adobe.com/flash/8_jp/main/000027 …


また,よく似たご質問をネット上で見つけましたので下に一応書いておきます。
しかし,そこでは,全く別の方法で対処されたようです。

FLASH-JP.COM - フォーラム
「マルチラインのTextFieldで入力時に改行が入らないようにしたい」
http://www.flash-jp.com/modules/newbb/viewtopic. …
    • good
    • 0
この回答へのお礼

できました!
しかもわずか3行でできるとは。
わざわざ実験までしていただきありがとうございます。

*テキストフィールドは「複数行」です。
重要なことを言い忘れてました。m(_ _)m

お礼日時:2007/05/18 10:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!