创建 Set Location 屏幕

在这一部分中,您将创建一个新屏幕来让用户选择他们想给四个位置的餐馆中的哪一个打电话订餐。用户在此屏幕上选择的位置会决定当他们在应用程序的主屏幕上选择"Reservations"时所拨打的号码。

用户首次启动应用程序并在主屏幕上选择"Reservations"时,应用程序会向用户显示 Set Location 屏幕,让用户在这里选择位置。接下来,当用户选择"Reservations"时,应用程序会立即拨打默认餐馆位置的电话号码。应用程序会使用一个共享对象在会话之间保存用户选择的位置。

  1. 在 Flash 中,打开您在创建 Video 屏幕中完成的文件。
  2. 在时间轴中,选择 Options Menu 图层的第 66 帧上的关键帧。
  3. 打开"库"面板("窗口">"库"),然后将名为 location_SF_button 的按钮从库拖至舞台。

    将该按钮放在包含"Select your preferred location…"的文本的下方。

  4. 在属性检查器的"实例名称"文本框中键入"sf_btn"。
  5. 将名为 location_SJ_button 的按钮从库拖至舞台,并将它直接放在 location_SF 按钮的下方。
  6. 在属性检查器的"实例名称"文本框中键入"sj_btn"。
  7. 为库中名为 location_PA 和 location_BK 的两个按钮重复步骤 6,并分别为它们指定实例名称"pa_btn"和"bk_btn"。

    应用程序的舞台看上去应该与下面的图例类似:

  8. 在"动作"面板("窗口">"动作")中,输入以下代码:
    stop ();
    fscommand2 ("SetSoftKeys", "Save", "Cancel");
    showCurrentLocation();
    //
    // 软键事件处理函数代码
    //
    Key.removeListener (myListener);
    var myListener:Object = new Object ();
    myListener.onKeyDown = function () {
        var keyCode = Key.getCode ();
        if (keyCode == ExtendedKey.SOFT1) {
            // 保存位置:
            saveNewLocation ();
            gotoAndPlay ("home");
        }
        else if (keyCode == ExtendedKey.SOFT2) {
            // 取消操作,返回主屏幕:
            gotoAndPlay ("home");
        }
    };
    Key.addListener (myListener);
    //
    // 函数:saveNewLocation()。
    //
    function saveNewLocation () {
        // 定义用户所选的按钮(位置):
        var selectedButton = Selection.getFocus ();
        switch (selectedButton._name) {
        case "_level0.sf_btn" :
            // 用户选择了"San Francisco"。
            location_so.data.phoneNumber = "415-555-1212";
            break;
        case "_level0.sj_btn" :
            // 用户选择了"San Jose"。
            location_so.data.phoneNumber = "408-555-1212";
            break;
        case "_level0.bk_btn" :
            // 用户选择了"Berkeley"。
            location_so.data.phoneNumber = "510-555-1212";
            break;
        case "_level0.pa_btn" :
            // 用户选择了"Palo Alto"。
            location_so.data.phoneNumber = "650-555-1212";
            break;
        }
    }
    //
    //     函数:showCurrentLocation()。
    //
    function showCurrentLocation() {
        // 检索共享对象中存储的电话号码:
        var phoneNumber:String = location_so.data.phoneNumber;
        // 提取电话号码的区号:
        var areaCode:String = phoneNumber.substring (0, 3);
        // 根据区号,对相应的按钮项
        // 设置选择焦点:
        switch (areaCode) {
        case "415" :
            Selection.setFocus (_level0.sf_btn);
            break;
        case "408" :
            Selection.setFocus (_level0.sj_btn);
            break;
        case "510" :
            Selection.setFocus (_level0.bk_btn);
            break;
        case "650" :
            Selection.setFocus (_level0.pa_btn);
            break;
        }
    }