「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で質問しましょう!

このQ&Aと関連する良く見られている質問

QFlashからHTMLテキストフィールドへテキストを渡す方法

Flashで作成した地図をクリックすると、その地名をHTML上のテキストフィールドに表示するようなものを作りたい(そのフィールドに渡された地名を使って検索をかけたい)のですが、それは可能でしょうか?
また、可能な場合、どのような方法で行えばよいのでしょうか?
知っていらっしゃる方がいらっしゃいましたら教えてください。
よろしくおねがいいたします。

Aベストアンサー

この辺りで調べたら出てくるかもしれ

http://support.adobe.co.jp/faq/faq/qadoc.sv?228618+002

Qmovie clipのインスタンス名を変数にし文字列+数字を代入し.g

movie clipのインスタンス名を変数にし文字列+数字を代入し.gotoAndStopを行ったが動作しない。

Flash 初心者です。
「なぞ」にはまり込んでしまいました。よろしくお願いします。

作っているのは、
丸いボタンをクリックすると、下にある白い札の色が変わるインタラクションです。
丸いボタンは2個あり、四角の札も2個あります。
クリックするボタンに対応した札が色が変わり、その札以外は白になります。

初め次のようなアクションスクリプトを書いて、うまく動かすことができました。

var onMapButton_num = 0;
onEnterFrame = function () {
     if (onMapButton_num == 0) {
spotName1_mc.gotoAndStop("white");
spotName2_mc.gotoAndStop("white");
}
else if (onMapButton_num == 1) {
spotName1_mc.gotoAndStop("orange");
spotName2_mc.gotoAndStop("white");
}
else if (onMapButton_num == 2) {
spotName1_mc.gotoAndStop("white");
spotName2_mc.gotoAndStop("orange");
}
};

onMapButton1_mc.onRelease = function() {
onMapButton_num = 1;
};

onMapButton2_mc.onRelease = function() {
onMapButton_num = 2;
};

ボタンを増やしたいので、記述を短するために次のように変えてみました。
(spotNameという変数を作りました)
var onMapButton_num = 0;
onEnterFrame = function () {
var spotName = "spotName" + onMapButton_num + "_mc"; /* spotName */
if (onMapButton_num == 0) {
spotName1_mc.gotoAndStop("white");
spotName2_mc.gotoAndStop("white");
}
else if (onMapButton_num == 1) {
spotName.gotoAndStop("orange"); /* spotName の使用*/
spotName2_mc.gotoAndStop("white");
}
else if (onMapButton_num == 2) {
spotName.gotoAndStop("white"); /* spotName の使用*/
spotName2_mc.gotoAndStop("orange");
}
};

onMapButton1_mc.onRelease = function() {
onMapButton_num = 1;
};

onMapButton2_mc.onRelease = function() {
onMapButton_num = 2;
};

結果、1つめのボタンをクリックしても、札の色が変わらなくなりました。
変数の使い方に問題があるのでしょうか?
よろしくお願いします!

movie clipのインスタンス名を変数にし文字列+数字を代入し.gotoAndStopを行ったが動作しない。

Flash 初心者です。
「なぞ」にはまり込んでしまいました。よろしくお願いします。

作っているのは、
丸いボタンをクリックすると、下にある白い札の色が変わるインタラクションです。
丸いボタンは2個あり、四角の札も2個あります。
クリックするボタンに対応した札が色が変わり、その札以外は白になります。

初め次のようなアクションスクリプトを書いて、うまく動かすことができました。

var onMapButton_nu...続きを読む

Aベストアンサー

var spotName = "spotName" + onMapButton_num + "_mc";
これ↑では
変数「spotName」の値として
文字列「spotName0_mc」などが入るだけです。
"インスタンスへの参照" が入るのではなく
"単なる文字列" が入るということです。

したがって例えば
spotName1_mc.gotoAndStop("white");
と書いていらっしゃる部分を
_root[spotName1_mc].gotoAndStop("white");
または
this._parent[spotName1_mc].gotoAndStop("white");
などのようにすると動くかもしれません。


Google検索「配列アクセス演算子」
http://www.google.co.jp/search?hl=ja&source=hp&q=%E9%85%8D%E5%88%97%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E6%BC%94%E7%AE%97%E5%AD%90

Qボタンシンボルでテキストをコピーする方法

flash mx 2004使用です。
action script初心者です。
ボタンシンボルをクリックするとコピーできるようなation scriptをご存じの方ご教授願います。

例えば
http://maar.7ca.jp/
上記サイトの左上にある猫のフラッシュ画像の中にある「貼り付け用」と書いてあるボタンのようなものが作りたいです。

宜しくお願い致します。

Aベストアンサー

幸いなことに,
ちょうど Flash MX 2004 から使用できるようになった,
System.setClipboard()メソッド
でクリップボード(コピーやカットなどを行なったデータを一時的に保存するメインメモリ上の領域)にテキストをコピーしています。

ご参考に↓。

「クリップボードにテキストをコピーするには」
http://www.openspc2.org/reibun/QuickReferenceActionScript/System/002/index.html

「システムクリップボードにコピーする(FlashMX2004)」
http://hakuhin.hp.infoseek.co.jp/main/as/system.html#SYSTEM_03


※ なお,
  Flash Player のセキュリティ上,
  クリップボードの内容を読み取ることはできません。
  つまり反対の
  System.getClipboard() メソッドはありません。
  ですから System.setClipboard() は,
  ご質問されているようなことにしか使えないので
  あまり発展性のないメソッドと言えます。

  --- 以下私の勝手なつぶやき---
  しかし反対の,
  System.getClipboard() メソッドが存在してしまうと,
  Flash 閲覧者のクリップボードデータ情報を
  勝手に PHP などに送信して
  知らない掲示板などに公開されるというような
  悪事にも発展する可能性があるので仕方ありませんね。

幸いなことに,
ちょうど Flash MX 2004 から使用できるようになった,
System.setClipboard()メソッド
でクリップボード(コピーやカットなどを行なったデータを一時的に保存するメインメモリ上の領域)にテキストをコピーしています。

ご参考に↓。

「クリップボードにテキストをコピーするには」
http://www.openspc2.org/reibun/QuickReferenceActionScript/System/002/index.html

「システムクリップボードにコピーする(FlashMX2004)」
http://hakuhin.hp.infoseek.co.jp/main/as/system.html#S...続きを読む

Qenterframeでのムービー制御とテキスト変数の代入

http://www.septeni.co.jp/
こちらのページのページ下部にある"news topics"のように一定時間がたつと次のボタンに順に移動し、各TOPICSが表示され、
1~5のボタンをクリックすると、紫部のボックスの移動と各TOPICSが表示されるようにしたいのですが
どう制御したらよいのでしょうか?
座標計算と、自動再生?をどう組み合わせていいのかわかりませんのでよろしくお願い致します。

Aベストアンサー

>> 自由に左右に移動しますよね。
>> これは座標計算ではないのでしょうか?

大変申し訳ごさいません。
その部分を見落としておりました。
全体を説明するとややこしくなるのでその部分の座標の求め方だけを説明します。


 1 | 2 | 3 | 4 | 5
の数字の部分に,(おおいかぶさるように)透明のボタンを用意します。
その座標をあらかじめ求めていても良いですが,
座標を変数にすると,求める必要がなくなるので楽になると思います。

紫色の四角をムービークリップとし,インスタンス名を「Murasaki」とします。
透明ボタンのインスタンス名を 「Button1」「Button2」~「Button5」とします。
例えば「Button1」には次のようなスクリプトを書きます。

on (release) {
onEnterFrame=function(){
Murasaki._x += ( Button1._x - Murasaki._x) * 0.5 ;
}
}

これで,紫の部分が1 | 2 | 3 | 4 | 5
の部分に移動します。
---3行目---
「Button1._x - Murasaki._x」
これがMurasakiのX軸方向の移動距離となります。
「* 0.5」
これで,早さを調節してください。

このスクリプトと同時に外部テキストから読み込んだTopicsの題名とURLを
それぞれ,テキストボックスに代入する,getURLするでできると思います。

>> 自由に左右に移動しますよね。
>> これは座標計算ではないのでしょうか?

大変申し訳ごさいません。
その部分を見落としておりました。
全体を説明するとややこしくなるのでその部分の座標の求め方だけを説明します。


 1 | 2 | 3 | 4 | 5
の数字の部分に,(おおいかぶさるように)透明のボタンを用意します。
その座標をあらかじめ求めていても良いですが,
座標を変数にすると,求める必要がなくなるので楽になると思います。

紫色の四角をムービークリップとし,インスタンス名を「Murasak...続きを読む

Q[FLASH]シンボルにHTMLを読み込むことってできますか?

シンボルにHTMLを読み込むことってできますか?
どなたか方法をご存知の方教えてください><;

Aベストアンサー

こんにちは。

「HTMLを読み込む」という意味であれば、繰り返しですがダイレクトテキストにHTMLコーディングしたテキストを読み込む程度です。

*外部テキストについてのチュートリアル
http://www.macromedia.com/jp/support/flash/ts/documents/fl0247.html

こんな感じで読む込むのですが、ダイレクトテキストの項目のひとつにHTMLレンダリングがあります。
これをオンにしておけば、読み込むテキストに<b>タグや<font>タグが使用出来ます。

getURLは基本的にHTMLで言うところの<a>タグですからね。あまり「読み込む」ような真似は出来ません。
*cgiを叩くのには使いますけど。

....というかここへ来てもまだあなたが具体的にどんな事をしたいのか見えないんですけど(笑)。


おすすめ情報