前一讲中我们制作了一个能够随机更换背景的Flash。本章我们将制作一个稍有些用处的Flash - 时钟。 为了降低美工难度,我们仅做一个黑底白字的电子钟。 时钟程序的原理很简单,获取系统当前的时间,再将其显示在画面上即可。 其中最重要的就是获取系统时间的方法。在 Flash Lite 中,获取系统时间需要调用函数 FSCommand2,功能如下:

FSCommand2("GetDateYear") 获取当前年份
FSCommand2("GetDateMonth") 获取当前月份
FSCommand2("GetDateDay") 获取当前日期
FSCommand2("GetTimeHours") 获取当前小时
FSCommand2("GetTimeMinutes") 获取当前分钟
FSCommand2("GetTimeSeconds") 获取当前秒

上一讲中我们的制作工具是 Flash MX 2004,很遗憾,Flash MX 2004 不支持 FSCommand2 命令! FSCommand2函数是 Flash Lite 1.1 中新增函数,而 Flash MX 2004 不支持 Flash Lite 1.0/1.1, 当然无法使用 FSCommand2 了。所以,赶快将你的 Flash 升级到 Flash MX Professional 2004, 并注意需要 Version 7.2 版。

启动 Flash MX Professional 2004 之后即可开始今天的制作了。首先新建一个 Flash 文档, 设置场景大小为 240x400 像素,背景黑色,然后打开文件->发布设置,将 Flash 版本修改为 Flash Lite 1.1, 如下图所示。

fl_2_fig01.png

接下来我们要制作一个名为 Digit 的mc(影片剪辑),该mc包含 10 帧,内容分别为数字 0-9, 这样我们就可以通过使用 gotoAndStop() 函数来控制 Digit 显示的文字。 按 Ctrl-F8 键建立一个 mc,名为 Digit,在第一帧使用电子数字的字体输入“8”,并按 Ctrl-B 将其转换成位图,如下图所示。

fl_2_fig02.png

如果你没有这种字体,也可以手工画出数字 8。第一帧制作完毕之后,选中第2帧至第10帧, 按 F6 键插入关键帧,这样每一帧上都复制了第一帧的数字 8。然后将每一帧的数字适当删除一些笔画, 做出数字 0 ~ 数字9。制作完成后的图层面板如下所示。

fl_2_fig03.png

再按 Ctrl-F8 建立一个 mc,名为 Colon,输入一个冒号,用作时分秒之间的分隔符。

按 Ctrl-E 键回到主场景,然后按照下图的样子配置 Digit 和 Colon,并设置好每个实例的名称。

fl_2_fig04.png

在主场景中新建 action 层,在第一帧输入以下脚本:

month = fscommand2("GetDateMonth");
day = fscommand2("GetDateDay");
hour = fscommand2("GetTimeHours");
min = fscommand2("GetTimeMinutes");
sec = fscommand2("GetTimeSeconds") ; 

tellTarget("/mon0") {
    gotoAndStop(../:month % 10 + 1);
}

tellTarget("/mon1") {
    gotoAndStop(int(../:month / 10) + 1);
}

tellTarget("/day0") {
    gotoAndStop(../:day % 10 + 1);
}

tellTarget("/day1") {
    gotoAndStop(int(../:day / 10) + 1);
}

tellTarget("/h0") {
    gotoAndStop(../:hour % 10 + 1);
}

tellTarget("/h1") {
    gotoAndStop(int(../:hour / 10) + 1);
}

tellTarget("/m0") {
    gotoAndStop(../:min % 10 + 1);
}

tellTarget("/m1") {
    gotoAndStop(int(../:min / 10) + 1);
}

tellTarget("/s0") {
    gotoAndStop(../:sec % 10 + 1);
}

tellTarget("/s1") {
    gotoAndStop(int(../:sec / 10) + 1);
}

这段脚本中需要注意的有两点。第一,Flash Lite 1.1 尚不能像 Flash 5 那样,使用 pranet.child.function() 的方式来访问对象。 因此在调用 mon0 实例的 gotoAndStop 函数时,必须使用 tellTarget 函数写成 Flash 4 风格。 第二,tellTarget("/mon0")之后的语句块中,变量的默认范围为 /mon0 对象内。因此要访问位于主场景的 month 变量时,需要写成 ../:month 的形式。

然后在action层的第二帧书写以下脚本:

gotoAndPlay(1);

最后选中放置 mc 的那一层的第二帧,按 F5 键添加一个非关键帧。完成后的层面板如下图所示。

fl_2_fig05.png

之后就可以按 Ctrl-Enter 键查看效果,并传到手机上了。

源代码下载