エンタープライズ:特集 2003/07/01 15:46:00 更新

JAVA Developer 2003年8月号より転載
FlashとTomcatで実現する使いたくなるWebアプリ (7/10)

(4)データの管理など(リスト7)

 データの保存は、すべてsetResultを使います。テキスト入力とチェックボックス選択では、それぞれ入力チェックを行い、未入力か未選択であれば、setAlertでメッセージを表示しています。

 ActionScriptでは、変数は宣言することなく使用することができます。また一度使用した変数は、その関数を抜け出しても有効な状態が継続されます。つまり、変数はデフォルトでムービークリップのpublicなインスタンス変数になります。

 関数内のローカル変数を使用したい場合には、宣言子「var」で変数を宣言する必要があります。varで宣言された変数は、その関数を抜けた時点で無効になります。

 今回フレームスクリプトで宣言した変数にアクセスするために、getter系関数をいくつか作っています。本来ActionScriptでは、_root.xxxxのような形でアクセスできるので、必ずしも必要ありません。私は、標準で用意されているフィールドと区別するために、getter系関数を定義したという程度の意味です。

リスト7 データの保存とバリデーション(フレームスクリプト内)
function setAlert (message)
{
    _root.message_text.text = message;
}
function setResult (value, display)
{
    res = new Object();
    res.qid = current_questionnaire["id"];
    res.value = value;
    res.display = display;
    result[q_index] = res;
    trace("result (" + res.qid + ")  = " +
           res.value + "(" + res.display + ")");
}
function getResult()
{
    return result[q_index];
}
function saveTextInput()
{
    var value = text_answer.text;
    if (value != "")
    {
        setResult (value, value);
        return true;
    }
    else
    {
        setAlert ("何も入力されていません。");
        return false;
    }
}
function saveCheckbox()
{
    var i = 0;
    var selected_id = new Array();
    var selected_display = "";
    var count = 0;
    while (true)
    {
        var r = this["check" + i];
        if (r === undefined) break;
        if (r.getValue())
        {
            var option_config = _root.extractGroupedElements (
                getCurrentConfig(), "option[" + i + "].");
            selected_id[count] = option_config["id"];
            if (count > 0)
                selected_display += ", " +
                    option_config["display"];
            else
                selected_display = option_config["display"];
            count++;
        }
        i++;
    }
    if (selected_id.length > 0)
    {
        setResult (selected_id, selected_display);
        return true;
    }
    else
    {
        setAlert ("何も選択されていません。");
        return false;
    }
}

前のページ | 1 2 3 4 5 6 7 8 9 10 | 次のページ

[佐藤 毅,JAVA Developer]

Copyright © ITmedia, Inc. All Rights Reserved.