「一気に最後まで読んだ」本、教えて下さい!

「001.html」「002.html」「003.html」「004.html」の4つの「html」を事前に作りました。
テキスト入力で作成した3つのボックス「s1・s2・s3」とダイナミックテキストで作った「s4」ボックス、それにボタンシンボル「GO」を配置しました。
ボタンシンボル「GO」につぎのようなASを書きました。
 on(release){
   s4.text=s1.text+s2.text+s3.text;
   getURL("○○.html","_top")
 }

「s4.text=s1.text+s2.text+s3.text;」で作成したテキストが「001」だった場合には「○○.html」に「001.html」と代入されて、そのURLへジャンプさせたいのですが、うまく代入できません。
array・for などを使うようなんですが、スクリプトの書き方を教えて頂けますでしょうか?

A 回答 (2件)

#1です。



> s1に入力後、「カーソル」が自動的にs2に移動する・・・
> s3に入力後は「カーソル」がシンボル「GO」へ自動的に移動して、
>「ENTER」キーのタッチでジャンプする、
> といったような設定は可能でしょうか?

Flash 的にはできますが,
質問者さまができるかどうかはわかりませんよ。
最初のご質問とはかなりレベルが違います。

いや,変な書き方をしましたが,
スクリプトコード自体は簡単です。
TextField クラス の onChanged ハンドラを使って,
テキストフィールドの入力値の変化を検出し,
そのタイミングで,
Selectionクラスの setFocus メソッドあたりを使ってフォーカスを変えてやれば良いと思います。
ただそれだけのことです。

とりあえずそのスクリプトを書いてみます。

スクリプトの前に,
ボタンにもインスタンス名を付けて置きます。
この例では 「GO_btn」 というインスタンス名を付けたとしておきます。

そして,
「s1」~「s4」 と 「GO_btn」 が存在するフレームに,
次のように書けば出来上がりです。

-----------------------------------
// テキストフィールド s1 の入力値が変わったとき
s1.onChanged = function() {
// もし s1 の入力値が空白以外であれば
if (s1.text != "") {
// s2 にフォーカスをセットする
Selection.setFocus(s2);
}
};

// テキストフィールド s2 の入力値が変わったとき
s2.onChanged = function() {
// もし s2 の入力値が空白以外であれば
if (s2.text != "") {
// s3 にフォーカスをセットする
Selection.setFocus(s3);
}
};

// テキストフィールド s3 の入力値が変わったとき
s3.onChanged = function() {
// もし s3 の入力値が空白以外であれば
if (s3.text != "") {
// ?? テキストフィールド s4 に s1~3 の入力値を足す ??
s4.text = s1.text+s2.text+s3.text;
// GO_btn にフォーカスをセットする
Selection.setFocus(GO_btn);
}
};
------------------------------------

と,ここまでは簡単です。
というか,ここまでは簡単に思えなければ先へは進めないのです。


ここから先をどうすべきか,色々な場合を想定して考えるのが難しいですし,
私は作成しようとしている者ではないのでどうするべきかわかりません。

ここから先, "場合" がたくさんあるのです。
つまりエラー処理です。

一応,1つだけはエラー処理を入れています。

 // もし s1 の入力値が空白以外であれば
 if (s1.text != "") {…}

このようにして,
空白でない "場合" に限って次のテキストフィールドにフォーカスを与えるようにはしています。
なぜこのようなことをしているかというと,「入力訂正」が入った "場合" を想定しているためです。

 --- 例えば ---
 最初に 「s1」 に "5" を入れてみたけど,
 「s2」 まで入力した段階で,
 『やっぱり 「s1」 は "3" に訂正しよう』
 と思って,「s1」の "5" を消した "場合"。

この if文を入れておかなければ,
「s1」の "5" を消したとたん 「s2」 にフォーカスが移ってしまいます。

これでは入力しにくいですし,
また人によっては単にこれだけのことを 『バグ』 と呼んで非難します。
それを防ぐためにこの if文 は入れてあります。

作りたいものによって,当然人間の行動も変わります。
思いもよらないような,たくさんの場合の行動を想定して作らないと,
かえってこういう仕組みが邪魔になります。

書かれていらっしゃること自体は,
上に書いたスクリプトでできますから簡単なのですが,
このエラー処理を入れて行く作業は他人ではできませんし難しいと思います。


あと肝腎な,
「s1」~「s3」のうちどれかに値が入力されていないものがあった "場合" はどうするのか。
の処理も入れていません。
    • good
    • 0
この回答へのお礼

大変ご親切にありがとうございました。
私も、先日「5問のうち1問を選択」といった設定を「チェックボタン」で作成してしまい、2問、3問にチェックを入れる利用者に戸惑いを感じて「ラジオボタン」に訂正している最中です。
エラー処理を細かく検討してみます。また、宜しくお願いします。

お礼日時:2007/12/18 10:57

他は変更なしで,



 getURL("○○.html","_top");
   ↓変更↓
 getURL(s4.text + ".html","_top");

とすれば良いのではないでしょうか?

この回答への補足

大変ありがとうございました。スムースにジャンプしてすっきりしています。
ところで上記設定の場合、s1・s2・s3に数字を入力する際に「カーソル」を各々のボックスに手動で移動させなければなりません。
s1に入力後、「カーソル」が自動的にs2に移動する・・・s3に入力後は「カーソル」がシンボル「GO」へ自動的に移動して、「ENTER」キーのタッチでジャンプする、といったような設定は可能でしょうか?
可能なようでしたら、改めてこの設定方法もご教授頂けますでしょうか?

補足日時:2007/12/13 11:09
    • good
    • 0

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