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

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

(5)プッシュボタンのイベントハンドラ(リスト8)

 Flash MXから登場したコンポーネントのプッシュボタン は、ムービークリップの一種ですが、ボタンが押されたときに実行する処理は、別の場所に記述して、その関数をバインドするということができます。今回は、それらの関数をフレームスクリプトに記述しました。

 スタートページのスタートボタンに割り当てるstart。入力ページを前後に切り替えるボタンに割り当てるexitAndGoBack、exitAndGoNext。そして、送信ボタンに割り当てるsendResultです。これらの割り当ては、各フレームにあるボタンのプロパティで、Click Handler項目に関数名を入力して行います。

リスト8 プッシュボタンのイベントハンドラ(フレームスクリプト内)
function start()
{
    setupPage();
}
function exitAndGoNext()
{
    if (reply_method == "text_input")
        exitTextInput();
    else if (reply_method == "select")
        exitSelect();
    else if (reply_method == "checkbox")
        exitCheckbox();
}
function exitAndGoBack()
{
    if (reply_method == "text_input")
        exitTextInputAndGoBack();
    else if (reply_method == "select")
        exitSelectAndGoBack();
    else if (reply_method == "checkbox")
        exitCheckboxAndGoBack();
}

 次に、テキスト入力、単一選択、複数選択のフレームに個別に配置した見えないムービークリップ「setup_mc」に記述するスクリプトについて説明します。

 ムービークリップのスクリプトは、クリップイベントと呼ばれるイベントハンドラとしてのスクリプトのみを記述することができます。クリップイベントには、マウス系イベント、キーボード系イベントのほかにloadとunload、enterFrame、dataというイベントがあります。今回は該当するフレームに入って対象のムービークリップがロードされる際に呼び出されるloadと、逆に表示対象のフレームから抜け出す際に呼び出されるunloadを使用します(リスト9:単一選択表示フレーム)。

リスト9 単一選択表示フレーム「setup_mc」のスクリプト
onClipEvent(load)
{
    this._visible = false;
    trace("select");
    var cfg = _root.getCurrentConfig();
    var i = 0;
    _level0.radio._visible = false;
    var radio_config = _root.extractGroupedElements (
        _root.getConfig(), "root.config.radiobutton.");
    var x = int(radio_config["x"]);
    var y = int(radio_config["y"]);
    var dy = int(radio_config["dy"]);
    var w = int(radio_config["w"]);
    var result = _root.getResult();
    var result_id = result.value[0];
    var selected = false;
    while (true)
    {
        var option_config = _root.extractGroupedElements (
            cfg, "option[" + i + "].");
        var id = option_config["id"];
        if (id === undefined) break;
        _level0.radio.duplicateMovieClip("radio" + i, 100 + i);
        var r = _root["radio" + i];
        r.setGroupName ("radio_group");
        r.setData (id);
        r.setLabel (option_config["display"]);
        r._x = x;
        r._y = y + dy * i;
        r.setSize (w);
        if (id == result_id)
        {
            r.setState(true);
            selected = true;
        }
        else if ((! selected) &&
                 option_config["isdefault"] == "true")
        {
            r.setState(true);
        }
        i++;
    }
}
onClipEvent(unload)
{
    var i = 0;
    while (true)
    {
        var r = _root["radio" + i];
        if (r === undefined) break;
        r.removeMovieClip();
        i++;
    }
}

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

[佐藤 毅,JAVA Developer]

Copyright © ITmedia, Inc. All Rights Reserved.