質問: flashでのラジオボタン flash勉強中のものです。 ボタンを作成し、ムービークリップの表示・非表示はできるのですが、ラジオボタンに「表示・非表示」項目を作り表示をクリックするとムービーを表示し、非表示をクリックするとムービーを消すといった事ができません。 ボタン(非表示)でする場合は以下のアクションスクリプトを記述しました。 on (release) { color1_mc._visible=false; } ラジオボタンは同様のスクリプトでは無理なんでしょうか?
回答: 基本的な考え方はボタンでの表示・非表示と同じです。「表示ボタン」が押されたらムービークリップの _visible を true に、「非表示ボタン」が押されたら false にすれば、ムービークリップの表示・非表示を切り替えることができます。 ですが、ラジオボタンの場合には、もう1つやることがあります。「表示ボタン」が押された時、相方の「非表示ボタン」は選択されていない状態にならなければいけません。逆の場合も同様に、「非表示ボタン」が押された場合は、「表示ボタン」は選択されていない状態になります。 flash では ui コンポーネントとして、様々な部品が提供されています。この中にはラジオボタンもあり、高機能で便利ですが、今回のように2択の場合は、ムービークリップだけで簡単に作ることもできます。コンポーネントの使用方法はヘルプや市販の解説書に譲るとして、今回はこちらの”ラジオボタンもどき”をご紹介しましょう。 flash のバージョンが書かれていませんが、とりあえず mx 以降として話を進めます。以下のスクリプトは flash 5 では正常に動作しませんので、ご注意ください。 まず、ラジオボタンをムービークリップで作ります。「挿入」→「新規シンボル」で、ムービークリップの編集画面にします。 フレーム1に「非選択」状態、フレーム2に「選択」状態の絵を描画します。それから、フレーム1に stop(); アクションを入れて、ラジオボタンのムービークリップは完成です。 ムービークリップができたら、シーンの編集に戻ります。ステージに先ほどのラジオボタンのムービークリップを2つと、表示するムービークリップを配置します。ボタンの名前が表示されませんので、テキストで横に表示しておくといいでしょう。 それぞれのムービークリップにインスタンス名を付けます。ここでは仮に、「表示ボタン」を「 disp_on 」、「非表示ボタン」を「 disp_off 」、ムービークリップを「 clip 」とします。 「表示ボタン」がクリックされた場合にやらなければいけない処理は、 ・「表示ボタン」を「選択された」状態にする ・「非表示ボタン」を「選択されていない」状態にする ・ムービークリップを表示 この3つです。 「非表示ボタン」が押された場合も、処理の内容自体はよく似ています。自分を「選択」状態に、「表示ボタン」を「非選択」状態にし、ムービークリップを非表示にする、という処理になります。 以上の考え方を元にスクリプトを組むと、こんな感じになります。シーンのタイムラインのフレームに、フレームアクションとして設定します。 (↓このスクリプトをコピーして使う場合は、各行の行頭の全角のスペースを、全て半角のスペースかタブに置き換えてください) //「表示ボタン」が押された場合 disp_on.onpress = function () { //このボタンを「選択」状態にする this.gotoandstop(2); //「非表示ボタン」を「非選択」状態にする disp_off.gotoandstop(1); //ムービークリップを表示 clip._visible = true; }; //「非表示ボタン」が押された場合 disp_off.onpress = function () { //このボタンを「選択」状態にする this.gotoandstop(2); //「表示ボタン」を「非選択」状態にする disp_on.gotoandstop(1); //ムービークリップを非表示に clip._visible = false; }; webページのアンケートやアプリケーションのラジオボタンは、いずれかのボタンが予め有効になっていることが多いですよね。 巷にならって、ここではとりあえず、デフォルトでは「表示ボタン」を有効にしておくことにします。 ”最初の1回だけ”という処理は、onclipevent の load イベントを使うと簡単です。以下のようなアクションを、「表示ボタン」の方のラジオボタンのインスタンス( disp_on )に、ムービークリップアクションとして設定します。 onclipevent( load ) { //「選択」状態にする this.gotoandstop(2); //ムービークリップを表示 clip._visible = true; } ボタンに関しては、実は、押されたら「選択された状態」の絵を表示し、相方のボタンは「選択されていない状態」の絵を表示する、という処理をしているに過ぎないわけです。 今回はボタンも2つですし、ムービークリップの表示・非表示を決めたいだけですので、どのラジオボタンが選択されているかの情報はさしあたって必要ありません。 まあ・・・セコいと言えばセコいですけど(^^;)、簡単な処理で事足りるなら、わざわざややこしい ui コンポーネントを使うまでもないと、私は思います。 しかし、アンケートなどのように、どの項目が選択されたかが重要な場合は、ただ絵を切り替えているだけではダメで、各ボタンに対応した「情報」の管理が必要になります。ui コンポーネントのラジオボタンはこのような場合も考慮して設計されていますので、興味がおありでしたら使ってみてください。