创建主屏幕的菜单

在本部分中,您将创建应用程序主屏幕的菜单。该菜单包含三个选项:"Specials"、"View Video"和"Reservations"。

  1. 打开位于 www.adobe.com/go/learn_flt_samples_and_tutorials_cn 的部分完成的名为 cafe_tutorial_start.fla 的源文件。在"示例和教程"页上,找到、下载并解压缩 Flash Lite 版本的 .zip 文件,然后导航到 Tutorial Assets 文件夹即可访问该文件。
  2. 在"时间轴"窗口("窗口">"时间轴")中,选择 menu 图层中的第 1 帧。
  3. 要创建菜单,请打开"库"面板("窗口">"库"),然后将名为 specials button 的按钮元件的实例拖至舞台。

    将该按钮放在介绍餐馆的文本字段(已就位)的下方。

  4. 在该 specials button 仍处于选中状态时,在属性检查器中的"实例名称"文本框中键入"specials_btn"。
  5. 将一个名为 video button 的按钮元件实例拖至舞台并将它放在 specials button 的下方。
  6. 在该 video button 处于选中状态时,在属性检查器中的"实例名称"文本框中键入"video_btn"。
  7. 将一个名为 reservations button 的按钮元件实例拖至舞台并将它放在 video button 的下方。
  8. 在该 reservations button 处于选中状态时,在属性检查器的"实例名称"文本框中键入"reservations_btn"。

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

  9. 在时间轴中,选择名为 ActionScript 的图层上的第 1 帧。
  10. 打开"动作"面板("窗口">"动作"),然后输入以下代码:
    stop();
    _focusrect = false;
    fscommand2("SetSoftKeys", "Set Location", "Exit");
    fscommand2("SetQuality", "high");
    fscommand2("Fullscreen", "true");
    

    这段代码执行以下操作:

    当 Flash Lite 处于全屏模式时,将看不到您在 SetSoftKeys 命令中指定的标签。因此,您必须将自定义软键标签添加至舞台。

  11. 添加以下代码来为菜单按钮及选择焦点处理按钮事件:
    // 设置当应用程序启动时以及在从
    // 其它屏幕返回主屏幕时的
    // 初始焦点。
    if (selectedItem == null) {
        Selection.setFocus (specials_btn);
    } else {
        Selection.setFocus (selectedItem);
    }
    // 为每个菜单按钮指定 onPress 事件处理函数,
    // 并且为所选按钮设置 selectedItem 变量
    // 对象:
    specials_btn.onPress = function () {
        gotoAndStop ("specials");
        selectedItem = this;
    };
    video_btn.onPress = function () {
        gotoAndStop ("video");
        selectedItem = this;
    };
    reservations_btn.onPress = function () {
        if (location_so.data.phoneNumber == undefined) {
        // 用户尚未指定位置,所以
        // 请转到"set location"屏幕:
            gotoAndStop ("options");
        }
        else {
            // 拨打共享对象中的号码:
            var phoneNum = location_so.data.phoneNumber;
            getURL ("tel:" + phoneNum);
        }
        selectedItem = this;
    };
    

    指定给名为 specials_btnvideo_btn 的按钮的 onPress 事件处理函数会将播放头移到标签分别为"specials"和"video"的帧。您将在后面的教程中为那些部分创建内容(请参阅创建特色餐屏幕创建 Video 屏幕)。

    当用户选择"Reservations"选项时,onPress 处理函数会拨打在 location_so 共享对象中指定的电话号码。(在此过程的后面,您将创建代码来创建该共享对象。)如果用户尚未指定电话订餐的位置,应用程序会将播放头移到标签为"options"的帧,用户可在该帧选择首选的订餐位置。

  12. 现在添加以下代码,为左软键和右软键创建一个按键侦听器:
    Key.removeListener(myListener);
    var myListener:Object = new Object();
    myListener.onKeyDown = function() {
        var keyCode = Key.getCode();
        if (keyCode == ExtendedKey.SOFT1) {
            // 处理左软键事件:
            gotoAndStop("options");
        } else if (keyCode == ExtendedKey.SOFT2) {
            // 处理右软键事件:
            fscommand2("Quit");
        }
    };
    Key.addListener(myListener);
    

    此代码使用一个按键侦听器对象来处理右软键事件和左软键事件。当用户按左软键时,播放头会移到标签为"options"的帧,用户按右软键时会关闭应用程序。

    有关使用事件侦听器的详细信息,请参阅《开发 Flash Lite 2.x 应用程序》中的"使用按键侦听器处理按键事件"

  13. 最后,请添加代码来初始化用于保存用户首选订餐位置的共享对象:
    // 定义 Shared Object 侦听器函数:
    function so_listener (the_so:SharedObject) {
        if (the_so.getSize () == 0) {
        // 共享对象不存在,所以用户
        // 尚未设置首选项。 
        }
        SharedObject.removeListener ("location");
    }
    // 创建共享对象:
    location_so = SharedObject.getLocal ("location");
    // 添加 SharedObject 侦听器对象:
    SharedObject.addListener ("location", this, "so_listener");
    
  14. 要测试到目前为止您所完成的工作,请选择"控制">"测试影片"。此时,您应该能够选择菜单项,方法是:使相应的按钮具有焦点,然后按模拟器的选择键(或计算机键盘上的 Enter 键)。在下面的部分中,您将创建特色餐屏幕和视频屏幕,以及用于指定默认位置的屏幕。