• ベストアンサー

チェックボックス+変数+値

flash初心者なのですが、flashのチェックボックスとボタン、ダイナミックテキストのテキストボックスを使ってチェックが入ればボタンを押すとテキストボックスに3を表示、チェックが入ってなければ5を表示させたいと考えています。 チェックボックスの名前はc_boxとしています。 テキストボックスの名前はzとしています。 どのようにすればよいか教えてください。 ボタンに on(press){if(c_box=true) {c_box=3}else{c_box=5} } などといろいろと試行錯誤を繰り返している状態です。 よろしくお願いします。

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

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

チェックボックス など コンポーネント系では, Flash のバージョンによって仕様が違うので必ずバージョンを書いてください。 Flash 5 ではコンポーネントとは呼ばれていませんでしたが,チェックボックスに限っては Flash 5(Flash 5 ではスマートクリップ) から存在しています。 今回のご質問は, そんなに大したスクリプトにはならはないので,Flash 5,Flash MX ,Flash MX 2004 ,Flash 8 の4バージョン分(3パターン)を書いておきます。 「チェックボックスの名前はc_box」,「テキストボックスの名前はz」と書かれていますが, この "名前" は, Flash MX ~ 8 の場合は,両方とも "インスタンス名" として解釈します。 Flash 5 の場合は, 「チェックボックスの名前はc_box」の "名前" はクリップパラメータの _name の名前, 「テキストボックスの名前はz」 はインスタンス名が存在していなかったので,変数名として解釈します。 また,チェックボックス,テキストボックスともにメインムービーのステージ上( _root )にある場合です。 ~ ~ Flash MX 2004 ・ Flash 8 の場合 ~ ~ ~ on (press) { if (_root.c_box.selected) { _root.z.text = 3; } else { _root.z.text = 5; } } ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Flash MX の場合 ~ ~ ~ ~ ~ ~ ~ ~ on (release) { if (_root.c_box.getValue()) { _root.z.text = 3; } else { _root.z.text = 5; } } ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Flash 5 の場合 ~ ~ ~ ~ ~ ~ ~ ~ on (release) { if (_root.c_box.getState()) { _root.z = 3; } else { _root.z = 5; } } ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ となります。 Flash 8 と MX2004 の 「selected」 Flash MX の 「getValue()」 Flash 5 の 「getState()」 の詳細は, お持ちのバージョンのヘルプで調べてみてください。 簡単とは言え,バイバイリンガルのようでちょっと疲れました。 また,チェックボックスなどが _root ではなく,ムービークリップの中などにある場合はパスを変えてください。 「ターゲットパス」 http://homepage3.nifty.com/ginga-b/MX/targetpath.html === その他 気になった点 ======================== ご質問の中にあるのスクリプト  on(press){if(c_box=true)  {c_box=3}else{c_box=5}  } の中の if文 が非常に気になったので, これについて説明しておきます。  if(c_box=true) c_box を一般化するために仮に XXX としておくと,上の式は,  if(XXX = true) という形になります。 とりあえずこれは チェックボックス を使うとか使わない以前に変(間違い)です。 if(XXX = true) の 「=」 は代入演算子で,等価演算子ではありません。 比較して,true か false を判定する場合は 「==」 という等価演算子を使います。 したがって,  if(XXX == true) とりあえず↑こうなります。 だいたいはこれでOKです。 でも if文 は ( ) の中を true が false かを判定し, ( ) の中が true であると { } 内を実行します。  if( AAA ){ BBB }    ↑AAA が true であれば, BBB を実行 つまり if(XXX == true) だと,  if(XXX == true){ BBB }    ↑XXX == true が true であれば, BBB を実行 「XXX が真実であると言うことが真実であれば,…」 とういう変な言い回しになります。 ちゃんと動作はしますけどね。言い方が変です。 ですから,ご質問のような  if(XXX = true) の場合,  if( XXX ) という形が望ましい形だと言えます。 そして,チェックボックスのチェックが入っているかどうかは, Flash MX 2004 ・ Flash 8 の場合 「チェックボックス.selected」 Flash MX の場合, 「チェックボックス.getValue()」 Flash 5 の場合,「チェックボックス.getState()」 というスクリプトで,チェックが入っていれば true,入っていなければ false というブール値(Boolean)を返しますから, Flash MX 2004 ・ Flash 8 の場合 「if (_root.c_box.selected)」 Flash MX の場合 「if (_root.c_box.getValue())」 Flash 5 の場合,「if (_root.c_box.getState()) 」 となるわけです。 if文 の ( ) の中は絶対に =(代入演算子) であってはならないというわけではありません。 場合によっては, =(代入演算子) もあり得ますが,普通は間違いで,ちゃんと判定されませんので特に注意してください。 余計に混乱してややこしくなるので見ない方が良いかもしれませんが, 一応参考URL↓。 「F-site if (condition=1)」 http://f-site.org/articles/2001/09/26000000.html

iou3
質問者

お礼

ありがとうございます。 非常に参考になり、上記の通りすることで無事完了しました。 本当にありがとうございました。