• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Flash内で検索)

Flash内で検索: 初心者でも簡単にできるのか?

このQ&Aのポイント
  • Flash内での検索方法について知りたいです。特定のデータを入力して検索する仕組みができるのか、またテンプレートやサンプルがあれば教えてほしいです。
  • Flashでは、初心者でも簡単に検索機能を作成することができるのでしょうか?携帯がjava未対応のため、Flashを利用したいと考えています。
  • Flash内での検索を実現する方法やデータの取り扱いについて教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.1

Flash Lite が作成できる環境をお持ちであれば可能です。 つまり, Flash Professional 8 や Flash MX 2004 などをお持ちでしたら。 しかし,検索 ですか??? 単なる条件分岐ではなくて…。 > 検索窓に1を入力して検索ボタンを > 押すと、Bobが表示されるといった仕組みです。 これをプログラミングすれば,  『もし検索窓に 1 が代入されていたら "Bob" を表示』 つまりこのような感じ↓ ---------------------- if (knsaku eq "1") { hyouji = "Bob"; } ---------------------- に見えますけど。 よくわからないので, ◎ if文 の条件分岐を使う方法 ◎ 複数の変数から指定番号の変数の値を取ってくる方法 ◎ 本当に検索する方法 この3つの方法を回答します。 また,携帯用Flash には, 「Flash Lite 1.0」,「Flash Lite 1.1」,「Flash Lite 2.0」という3つの規格(バージョン)のSWFが存在しますが, 「Flash Lite 2.0」規格のFlashが動く携帯はまだまだ少ないと思われるため, 「Flash Lite 1.0」もしくは「Flash Lite 1.1」 対応ということで書きます。 /////////////////////////////////////////////////////// 3つの方法ともに共通するものをまず作成します。 Flash で新規ドキュメントを作成し, 「パブリッシュ設定」で 「Flash」タブから「FlashLite1.1」 または,「FlashLite1.0」を選択して「OK」しておきます。 ステージのサイズを 250×250くらいにしてください。 そして,まずステージ上に,1 か 2 か 3 を代入するための, テキスト入力のテキストフィールドを作成します。 文字の色は黒など,背景とは違う色を選択しておいてください。 そして,そのテキスト入力のテキストフィールドを選択した状態で, 下の プロパティインスペクタ でこのテキストフィールドに "変数名" を付けます。 "インスタンス名" ではありません。"変数名" です。 検索文字入力用ですから, 「kensaku」 という変数名を付けておくことにします。 その下あたりに四角い塗りでも描いて, その塗りを選択して,「修正」→「シンボルに変換」で, ボタンシンボルに変換します。 そして,そのボタンの下あたりに, 今度は出力表示用のダイナミックテキストのテキストフィールドを用意します。 そのテキストフィールドを選択した状態で, 下の プロパティインスペクタ でこのテキストフィールドにもまた "変数名" を付けます。 表示用ですから, 「kensaku」 という変数名を付けておくことにします。 ステージ上を図示すると次↓のような感じになります。 --------------------   ┌─────┐   └─────┘ ←テキスト入力 変数 kensaku     ■■■■■     ■■■■■   ←検索ボタン(ボタンインスタンス)   ┌─────┐   └─────┘ ←ダイナミックテキスト 変数 hyouji -------------------- ここまで準備ができたら, 3つの場合について3通りの方法の説明に移ります。 =========================================== ◎ if文 の条件分岐を使う方法 真ん中のボタンを選択して, そのボタンを選択した状態で,下のアクションパネルに次のように書きます。 コピペでかまいません。 --------------------------------- on (release) { if (kensaku eq "1") { hyouji = "Bob"; } else if (kensaku eq "2") { hyouji = "John"; } else if (kensaku eq "3") { hyouji = "Joe"; } } --------------------------------- そして, SWFをパブリッシュし, kensaku という変数名を付けた テキストフィールド に, 1 か 2 か 3 のを記入し, ボタンをクリックすると, hyouji という変数名をを付けた テキストフィールド に, Bob か John か Joe が表示されます。 みたまんま,簡単な if文 による分岐です。 =========================================== ◎ 複数の変数から指定番号の変数の値を取ってくる方法 これは,Bob や John や Joe などのデータ分の変数を用意して, その値である Bob や John や Joe などのデータを表示させる方法です。 まずデータ部分として, _root のフレームに変数と値の用意をしておきます。 次はフレームに書くスクリプトです。 ---------------------------------- a1 = "Bob"; a2 = "John"; a3 = "Joe"; ---------------------------------- 変数 a1 ~ a3 にそれぞれのデータを入れています。 そして,ボタンに書くスクリプトは次のようになります。 ---------------------------------- on (release) { hyouji = eval("a" add kensaku); } ---------------------------------- if文の分岐などもないので,非常にシンプルです。 そして,なおかつデータ部分と動作部分が分かれているので, データを修正するだけで,いろいろな表示ができます。 普通の Flash だと配列を使うところだと思いますが, Flash Lite 1.1 まででは配列というものがないので, eval 関数で変数の集合体を配列のように扱っています。 3つの方法の中では一番お薦めの方法です。 =========================================== ◎ 本当に検索する方法 本当に, -------------  1,Bob  2,John  3,Joe ------------- という改行入り文字列から検索するのですか??? なぜそんなことをしなければならないのか意味がわかりませんが, 一応その方法を書きます。 しかし,"上のような規則の場合限定" です。 データの形式が変われば当然スクリプトも変わりますよ。 この形↓,  1,Bob  検索すべき 1 などの番号がまずあって,  その後に 「,」 が入って,  その後に 検索結果表示のデータがあって,  その後(次の番号との間に)に改行が入っている。 この形式限定のスクリプトです。 まず, データ用のダイナミックテキストのテキストフィールドを, ステージ外など見えない場所に作成します。 そのダイナミックテキストは,複数行表示に設定して, 「a」 という "変数名" を付けてください。 その「a」のテキストフィールドに,  1,Bob  2,John  3,Joe を書いておきます。 そしてボタンには次のように書きます。 -------------------------------------- on (release) { // 変数 hyouji の初期化 hyouji = ""; // 変数 i の初期値を 1 に設定 i = 1; // 変数 mojisuu に 変数 a の文字数を取得 mojisuu = mblength(a); // 変数 i が mojisuu 以下である条件でループ while (i<=mojisuu) { // 変数 a の i 文字目が kensaku の値と等しければ if (mbsubstring(a, i, 1) == kensaku) { // 次の改行コードがあるまでループ while (mbsubstring(a, i+2, 1) ne "\r" and i<=mojisuu) { // 変数 hyouji に i+2 番目の文字を足す hyouji = hyouji add mbsubstring(a, i+2, 1); // 変数 i に 1 を加算 i++; } } // 変数 i に 1 を加算 i++; } } -------------------------------------- while文の中にwhile文が入っているという, 結構ややこしめのスクリプトになっています。 >> データもFlashのファイルに含めることができますか? 上に書いたように, 変数名付きテキストフィールドを用意し, その中にデータを書けばFlashのファイルに含めることができます。 そして, 例えば kensku テキストフィールドに, 仮に 1 が入った場合, 変数 a の文字列の先頭から,1文字ずつ見ていって, もし 1 があればその2文字後から改行コード "\n" までを, hyouji テキストフィールドに表示するというスクリプトです。  [ 注意 ]  ひょっとしたら  改行コードは "\r" ではなく "\n" になるかもしれません。  これはデータを入力するソフトやOSによって変わります。  もし, "\r" でうまく行かなければ,  while (mbsubstring(a, i+2, 1) ne "\r" and i<=mojisuu) {  の部分を  while (mbsubstring(a, i+2, 1) ne "\n" and i<=mojisuu) {  に変えてください。  Flash でスクリプトを用いで意図的に改行を入れる場合は,  "\n" が普通です。  しかし,テキストフィールドにWindows環境で入力した場合,  "\r" になってしまいます。  メモ帳からコピペした場合は,  "\n\r" となったりしますが, "\n\r" なら "\r" でできます。   "\r" が一番無難であると考えたため,  スクリプトでは "\r" を使用しています。 =========================================== 携帯用Flash(Flash Lite)で参考になるサイトや書籍はほとんどありません。 上のスクリプトでも eq や add など,Flash Lite 特有の言葉が入っていたりしますが, なんとかその辺は,ヘルプなどで調べながらやって行くしかないでしょう。

moby2002
質問者

お礼

2番目のやり方でなんとかできました。 とりあえず動くので、後は自分で勉強して色々と改良してみたいと思います。 ありがとうございました。

関連するQ&A