2006-08
13

前一讲中我们制作了一个能够随机更换背景的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 键查看效果,并传到手机上了。

源代码下载:attachclock.zip



才一条评论,欢迎发表高见!
#1
Erqiudao » 恶心的日本手机主题
2009-04-01 10:46

[...] 后来看了一些教程,试验后唯一可以用的就是这个,有兴趣的看一下自己玩儿吧,它是最麻烦的一个,也是唯一我用了好使的一个… http://tech.idv2.com/2006/08/13/flashlite-dev-note-2/ [...]

添加评论

Security Code: