この人頭いいなと思ったエピソード

こんにちは。
以前にFlash Lite 1.0でテキストボックスに押した数字を直接表示させると言う事を教えて頂いた者ですが、テキストボックスに一度入力した文字を1文字ずつクリアする事は可能でしょうか?
Flash Lite 1.0ではキーイベントが0~9、#、*のみしか使えないのでクリアキーではできませんが、クリアキーの変わりとして*でクリアをしたいと思います。

例えば二桁数字12を打ったた場合、1度クリアボタンを押すと2が消える。更にもう一度クリアボタンを押すと1が消える。のようにする事は可能でしょうか?

A 回答 (1件)

まず前提として,


_root に 「mytxt」という変数名のテキストフィールドがあって,
ボタンを 10 個用意し,

--------------------------
on (keyPress "0") {
mytxt = mytxt add 0;
}
--------------------------

--------------------------
on (keyPress "1") {
mytxt = mytxt add 1;
}
--------------------------

--------------------------
on (keyPress "2") {
mytxt = mytxt add 2;
}
--------------------------

 ~ 略 ~

--------------------------
on (keyPress "9") {
mytxt = mytxt add 9;
}
--------------------------

と書いて行った場合の話ですね。
今,前回のご質問に対する回答を読み返してみると,
数字が合っていなくて,書いていることが無茶苦茶になってますね。

keyPress "◎"

mytxt add ◎;
の ◎ は同じ数字でないとなりませんでしたね。
失礼しました。


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

では,本題。

> クリアキーの変わりとして*でクリアをしたいと思います。

「最後の文字を消す」と考えるとうまく行きません。
「最初から最後の手前までの文字を再表示させる」と考えるのです。
すると簡単にできます。


これも見えないボタンを作って,
次のように書けば大丈夫だと思います。

----------------------------
on (keyPress "*") {
// 変数 mylen に mytxt の文字列の長さを取得
mylen = length(mytxt);
// mytxt に mytxt の最初 から 最後-1 までの文字列を表示
mytxt = substring(mytxt, 0, mylen-1);
}
----------------------------
    • good
    • 0
この回答へのお礼

またご回答くださってありがとうございます。
以前も凄くわかりやすく説明頂いたので数字の事は大丈夫でした。
今回の物は今まで「最後の文字を消す」としか考えてなかったので全く思いつきませんでした。
今回もわかりやすく教えてくださってありがとうございました。

お礼日時:2006/12/21 00:18

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


おすすめ情報