FLASHのお勉強 ーアクションスクリプトの実践的事始めー

(55) フォーム用チェックボックスの動的作成   2008/1/2

(actionscript3.0)

 本サイト(51)、(52)、(53)、(54)でメールフォームの作成および、それら部品の作成について解説したが、本稿は、アンケート調査などに使われるチェックボックスの作成である。 
 確認ボタンをクリックすると、選ばれている項目が表示用テキストフィールドに表示されるまでを作成する。
SAMPLE 
ステージの準備

●200*350のステージに、アンケート文、確認ボタン(コンポーネントのButton)、確認用ダイナミックテキストボックス(インスタンス名:selectedItem)を左SAMPLEのように配置する。
(以上は、左サンプルの場合であって、もちろんアンケートシートやフォームのシートの一部として使うことになる)

●コンポーネントウィンドウから、ライブラリーにCheckBoxをドラッグする。
スクリプト
 ファイルの構成: setupCheckBox.fla(swf) − createCheckBox.as
setupCheckBox.flaファイル
var chbItem =["AAAA","BBBB","CCCC","DDDD"];
var chb1x:Number = 50;
var chb1y:Number = 50;
var chb1size:Number = 14;
var check1:createCheckBox = new createCheckBox(chbItem,chb1x,chb1y,chb1size);
addChild(check1);
function confirm(event) {
        selectedItem.text = check1.selectedBox();
}
btn.addEventListener(MouseEvent.CLICK,confirm);
<説明>
var chbItem =["AAAA","BBBB","CCCC","DDDD"];
  チェックボックスの項目ラベルを配列で定義
var chbx:Number = 50;
  チェックボックスのx座標
var chbsize:Number = 14;
  チェックボックスラベル表示テキストのサイズ
var check:createCheckBox = new createCheckBox(chbItem,chbx,chby,chbsize);
  クラス(as)ファイルにchbItem以下の引数を渡し、チェックボックス(chb11) を作成し、表示する(addChild(chb)
−−−−ここまでで、チェックボックスが作成される−−−−
function confirm(event) {
 確認ボタンがクリックされたら以下を実行する関数
  selectedItem.text = check1.selectedBox();
   クリックされている項目データを、クラスファイルから取得し、selevtedBoxに表示する
btn.addEventListener(MouseEvent.CLICK,confirm);
 確認ボタンがクリックされたら、選択された項目を表示する関数confirmを実行

createCheckBox.as ファイル

package {
        import fl.controls.CheckBox;
        import flash.display.Sprite;
        import flash.events.*;
        import flash.text.*;

        public class createCheckBox extends Sprite {
                public var checkedLabel:String="";
                private var chB:Array=new Array();
                private var n:Number;
                public function createCheckBox(chbItem:Array,x:Number,y:Number,chbsize:Number) {
                        n = chbItem.length;
                        for (var i:uint=0; i<n; i++) {
                                var chb:CheckBox = new CheckBox();
                                chb.label = chbItem[i];
                                chb.x = x;
                                chb.y = y + (chbsize+7)*i;
                                addChild(chb);
                                var chb_style:TextFormat = new TextFormat();
                                chb_style.size = chbsize;
                                chb.setStyle("textFormat",chb_style);
                                chB[i] = chb;

                        }
                }
                public function selectedBox():String {
                        checkedLabel = "";
                        for (var k:uint=0; k<n; k++) {
                                if (chB[k].selected ==true) {
                                        checkedLabel += chB[k].label.toString() + "\n";
                                }
                        }
                        return checkedLabel;
                }
        }
}
<説明>
import 必要なパッケージの読み込み
public var checkedLabel:String="";
  チェックされたボックスのラベルを格納するための変数を定義
private var chB:Array=new Array();
  チェックされたボックスを識別するための配列を定義
var n:Number = rb_item.length;
  配列の長さ、すなわち、項目数
var chb:CheckBox = new CheckBox();
  チェックボックスのインスタンス(chb)作成
chb.label = chbItem[i];
  引数で渡された配列データに基づいて、チェックボックスのラベル(項目)を割りつける
var chb_style:TextFormat = new TextFormat();
  テキストのフォーマット
public function selectedBox():String {
  swfファイルにチェックされた項目を引き渡す関数
checkedLabel = "";
  checkedLabel のクリヤー
for (var k:uint=0; k<n; k++) { if (chB[k].selected ==true) { checkedLabel += chB[k].label.toString() + "\n"; } };
  チェックボックス全部を調べ、チェックされたボックスのラベルを足していく(\nは改行)
return checkedLabel;
  swf(fla)ファイルから参照されたときにcheckedLabelを返す
 
flashirohaサイト内  Web全体 
HOME   お勉強総リスト