つい集めてしまうものはなんですか?

Actionscript2.0で開発をしています。
ユーザーによってテキストフィールドに入力された文字を
ボタンによって"1文字削除する"事ができる
文字の削除ボタンを作成するには
どういった関数を使えばよいでしょうか??

A 回答 (2件)

「どう1文字ずつ削除するのか」


によって変わると思います。

「テキストフィールドの文字列の後(右)から1文字ずつ削除」
「テキストフィールドの文字列の前(左)から1文字ずつ削除」
「テキストフィールドの文字列をランダムに1文字ずつ削除」
「テキストフィールドの文字列をABC…あいう…順に1文字ずつ削除」
  などなど


よくわかりませんので,
「テキストフィールドの文字列の後(右)から1文字ずつ削除」
という例を書きます。

新規ドキュメントを作成して,
次のスクリプトをフレーム1にコピペして
「制御」→「ムービープレビュー」です。


//////////////////////////////////////////////////////////////////////////////
// 適当に TF というテキストフィールドをステージ上に作成したとする
this.createTextField("TF", 0, 50, 100, 0, 0);
TF.border = true;
TF.autoSize = true;
// テキストフィールドに「あいうえお」が入力されていたとする
TF.text = "あいうえお";
//
// ------
//
// 適当に赤いボタン(この場合ムービークリップ)を
// ステージ上に作成したとする
var BTN:MovieClip = this.createEmptyMovieClip("BTN", 1);
BTN.beginFill(0xFF0000, 100);
BTN.moveTo(50, 200);
BTN.lineTo(150, 200);
BTN.lineTo(150, 250);
BTN.lineTo(50, 250);
BTN.lineTo(50, 200);
//
// ---↓本題はココだけ↓---
//
// 赤いボタンをクリックしたときの動作定義
BTN.onRelease = function():Void {
// テキストフィールドの文字を右から消す
TF.text = TF.text.substr(0, TF.text.length-1);
};
//////////////////////////////////////////////////////////////////////////////
  

この回答への補足

毎度、勉強になります!
length-1
で実現できるとは知りませんでした。

flash技術者の方でしょうか?
ありがとうございました。助かりました。

補足日時:2009/04/20 23:50
    • good
    • 0

#1 です。



> length-1
> で実現できるとは知りませんでした。

私も知りませんでした。
と言いますか,
知ってる知らないではなくて,
考えるとそうなるのです(そういうのも方法の1つです)。


あと『「length-1」で取得』しているのではありませんよ。
誤解されている気もするので

 // テキストフィールドの文字を右から消す
 TF.text = TF.text.substr(0, TF.text.length-1);

について補足します。
簡単なところから
スクリプトを進化させて説明します。


// テキストフィールド TF に 「あ」 を表示
TF.text = "あ";

です。


// テキストフィールド TF に TF と同じ内容を表示
TF.text = TF.text;

です。


// テキストフィールド TF に TF の左1文字を表示
TF.text = TF.text.substr(0, 1);

です。


// テキストフィールド TF に TF の左から2文字を表示
TF.text = TF.text.substr(0, 2);


// テキストフィールド TF に TF の左から右までを表示
// →TFの1文字目から全文字数文字を表示
TF.text = TF.text.substr(0, TF.text.length);


// テキストフィールド TF に TF の左から(右-1)文字までを表示
// →TFの1文字目から(全文字数文字-1)文字を表示
TF.text = TF.text.substr(0, TF.text.length-1);


だから結局
// テキストフィールドの文字を右から消す
TF.text = TF.text.substr(0, TF.text.length-1);

ということになります。


文字列.substr(開始位置, 開始位置からの文字数)

という関数(この場合はメソッド)を知っていれば,
あとはそれを考えて使えば良いということです。

いちいちそれがどのように使えるかなど知りませんし覚えてもいません。
だから
知っているとか知らないとかではなく,
考えて出すということになります。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。
要はひらめいたものを使ってやってみるって事ですよね。
この関数は知っていましたが、-1という使い方は思いつきませんでした。
時間が無くてテンパっていたので考える暇があまり無かったのですが、
それでもやはり、熟練している方でしたら
すぐに思いつくようなひらめきなんだと思います。
ありがとうございました。

お礼日時:2009/04/25 16:36

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


おすすめ情報