手机Flash开发指南2
前一讲中我们制作了一个能够随机更换背景的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, 如下图所示。
接下来我们要制作一个名为 Digit 的mc(影片剪辑),该mc包含 10 帧,内容分别为数字 0-9, 这样我们就可以通过使用 gotoAndStop() 函数来控制 Digit 显示的文字。 按 Ctrl-F8 键建立一个 mc,名为 Digit,在第一帧使用电子数字的字体输入“8”,并按 Ctrl-B 将其转换成位图,如下图所示。
如果你没有这种字体,也可以手工画出数字 8。第一帧制作完毕之后,选中第2帧至第10帧, 按 F6 键插入关键帧,这样每一帧上都复制了第一帧的数字 8。然后将每一帧的数字适当删除一些笔画, 做出数字 0 ~ 数字9。制作完成后的图层面板如下所示。
再按 Ctrl-F8 建立一个 mc,名为 Colon,输入一个冒号,用作时分秒之间的分隔符。
按 Ctrl-E 键回到主场景,然后按照下图的样子配置 Digit 和 Colon,并设置好每个实例的名称。
在主场景中新建 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 键添加一个非关键帧。完成后的层面板如下图所示。
之后就可以按 Ctrl-Enter 键查看效果,并传到手机上了。