在Director MX 2004使用Flash里面的函数
现在在Director MX 2004中我们可以直接使用Flash里面的函数了。这样我们可以将一些flash实现起来比较方便的功能交给flash去完成。
下面我们还是用一个简单的例子来说明,希望能起到抛砖引玉的效果。
我们这里介绍的是一个时钟显示的范例,就是显示系统的星期,年,月,日,时,分,秒等等。以前我们做这个是用DateTime xtra,里面提供了返回上述的7个值的函数。
今天我们是用flash来做,首先,我们在flash的帧脚本里面写好我们需要的函数,这里我写了上述的7个函数(当然你可以进一步扩充),代码如下:
//返回小时,范围0-23
function getHours() {
myDate = new Date();
return myDate.getHours();
}
//返回分钟,范围0-59
function getMinutes() {
myDate = new Date();
return myDate.getMinutes();
}
//返回秒数,范围0-59
function getSeconds() {
myDate = new Date();
return myDate.getSeconds();
}//返回一个4位数的年份,如2004
function getYear() {
myDate = new Date();
return myDate.getFullYear();
}
//返回月份,范围1-12
function getMonth() {
myDate = new Date();
return myDate.getMonth()+1;
}
//返回日期,范围1-31
function getDate() {
myDate = new Date();
return myDate.getDate();
}
//返回星期,范围0-6,0表示星期天
function getWeekDay() {
myDate = new Date();
return myDate.getDay();
}
下面我们,将其导入到到D2004中,放置到第一个通道上(这里我们给该精灵取了一个名字“DateObj“,这样就算放到其他通道我们也不用改代码了,这也是2004新增的特性),放在舞台显示区外面(因为我们只用其中的函数而不需要显示它),这样我们就可以调用里面的函数了,代码如下(这是一个电影脚本里面的全局函数):
on ShowTime
--因为后面要多次用到 sprite("DateObj") ,故把它赋给一个变量,以后就可以当作一个对象调用。
Date=sprite("DateObj")
DL=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]
--将取得的星期几通过列表转换成中文
w=DL[Date.getWeekDay()+1]
--过得年月日
d=integer(Date.getYear()) & "年" & integer(Date.getMonth()) & "月" & integer(Date.getDate()) & "日"
--获得时分秒
h=integer(Date.getHours())
--不直接用m=integer(Date.getMinutes(),而是m=string(integer(Date.getMinutes())+100),
--然后用 delete char 1 of m,删除第一个字符,使其始终保持长度为2,如8点01分就会显示
--为08:01而不是8:1
m=string(integer(Date.getMinutes())+100)
delete char 1 of m
s=string(integer(Date.getSeconds())+100)
delete char 1 of s
t=h & ":" & m & ":" & s
--将得到的内容给timeText member 来显示。
put w & "-" && d && t into member "timeText"
end
最后在帧脚本中加入下面代码就可以显示当前时钟了。
on exitFrame me
ShowTime()
go the frame
end
看看是不是舞台上有一个动态更新的时钟了。我们还可以做成很漂亮的指针式时钟等等。
这里还是有个小问题,就是函数的返回值是整型的到了D中却变成了浮点型(所以要用integer函数来转成整型),当然这对我们使用影响不大,但还是值得注意。
这里我们通过一个简单的例子说明了如何在D 2004中调用Flash里面的函数(这里我们是调用的自定义函数),这给我们的创作带来了更大的灵活性。