郑源源
我们在登录Internet浏览网站时,经常会看到一些主页的广告标题栏下显示时间问候语,它们可以根据本地运行的电脑时间予以实时反馈,这些都是运用asp或jsp语言来制作的。在Flash中,不需制作任何组件,而是利用强大的ActionScript控件功能,在动态文本框中调用Date对象来获取正在运行中的操作系统的时间和日期,通过调用动作gotoAndPlay使之循环执行Date对象,不断地刷新时间,同样可以实现这一效果。
双击打开Flash的主界面,新建一个文件,设定影片大小为128×128像素。选择文本工具(图1),打开Text Optionsn属性面板,在面板的下拉列表中选择DynamicText(动态文本框),在画板中绘制一个无边的动态文本框。为了让Flash能够识别这一文本框,必须为其赋予一个变量名,如:dateTextField1,把该变量名填入Text Options的变量栏里,作为文本框的标识(图2)。
在图层1的第一关键帧里单击右键,从弹出的快捷菜单里选择Actions命令,打开Fra-me Actions面板,单击它的右上角,选择“专家模式”,这时就可以在动作编辑窗口中输入如下脚本:
myDate=newDate();//创建新的日期对象
dateTextField1=(mydate.getFullYear()+"年"+(mydate.getMonth()+1)+"月"+mydate.getDate()+"日" );
//根据本地机时间获取当前年、月、日,然后传递到动态文本框中输出
按同样的步骤新建图层2,在第一帧里绘制一个动态文本框,定位在dateTextField1的下方,命名为dateTextField2,在帧动作中输入如下脚本:
myDate=newDate();//创建新的日期对象
dateTextField2=mydate.getHours()+":"+mydate.get
Minutes()+":"+mydate.getSeconds();
//根据本地机时间获取当前小时、分钟、秒,然后在动态文本框中输出
需要注意的是,读取getHours()命令时,Flash MX以前的版本会出现把系统时间23默认为0的现象,针对这种现象我们可以把上面的脚本做一些修改:
dateTextField2=mydate.getHours()-1+":"+mydate. get
Minutes()+":"+mydate.getSeconds();
新建图层3,在第一帧绘制一个动态文本框,同样定位在dateTextField2的下方,命名为dateText-Field3,在帧动作中输入如下脚本:
myDate=newDate();//创建新的日期对象
myDay=myDate.getDay();
myHour=myDate.getHours();//分别把星期几、小时赋值给变量myDay、myHour中
if ( myDay < 1 ) {
myDay="日";
} else if ( myDay < 2 ) {
myDay="一";
} else if ( myDay < 3 ) {
myDay="二";
} else if ( myDay < 4 ) {
myDay="三";
} else if ( myDay < 5 ) {
myDay="四";
} else if ( myDay < 6 ) {
myDay="五";
} else {
myDay="六";
}
//判断当变量为星期几时,返还相对应的大写字符,改变日期的输入格式
if ( myHour <= 6 ) {
myHour="凌晨好! ";
} else if ( myHour <= 11) {
myHour="上午好! ";
} else if ( myHour <=13) {
myHour="中午好! ";
} else if ( myHour <= 18) {
myHour="下午好! ";
} else if ( myHour <= 21) {
myHour="晚上好! ";
} else if ( myHour <=24) {
myHour="晚安! ";
}
//判断当变量小于或等于什么时间,则反馈相对应的问候语
dateTextField3="星期"add myDay+""+myHour;
//把字符“星期”及问候语与获得的日期数连接,然后在动态文本框中输出
最后,分别在三个图层中插入第二关键帧,在Actions命令中添加goto动作:
gotoAndPlay(1);//当程序运行到这里时,循环跳转执行第一帧
现在,按Ctrl+Enter运行程序,看看执行的结果如何吧!