上一篇 | 下一篇

在Director MX 2004使用Flash里面的函数

发布: 2007-1-25 13:47 | 作者: 爱伊 | 来源: 奥古多媒体 | 查看: 119次

  现在在Director MX 2004中我们可以直接使用Flash里面的函数了。这样我们可以将一些flash实现起来比较方便的功能交给flash去完成。奥古多媒体4WC wwttU!L`w.D*B\
奥古多媒体s"w8q bL;]Q!Q!x7G/l
  下面我们还是用一个简单的例子来说明,希望能起到抛砖引玉的效果。
}+y2L:F*x 我们这里介绍的是一个时钟显示的范例,就是显示系统的星期,年,月,日,时,分,秒等等。以前我们做这个是用DateTime xtra,里面提供了返回上述的7个值的函数。
@-~Vd.h 奥古多媒体!F? KzeeP
  今天我们是用flash来做,首先,我们在flash的帧脚本里面写好我们需要的函数,这里我写了上述的7个函数(当然你可以进一步扩充),代码如下:奥古多媒体$l^ q#eb

1w)b`%B"_QY8Zw //返回小时,范围0-23
?'M+\m6^HHV)v function getHours() {
,l]&@'Zaw4cF myDate = new Date();
i TQ:AS return myDate.getHours();
V#TY e$m*Y8sA4Q0r~1x }"P }
n#PM e$f,D9}4M;PVw //返回分钟,范围0-59
:I#mg~qd6rP function getMinutes() {
*e(M}2D4I4EgX myDate = new Date();奥古多媒体y-x_x7JLZ
return myDate.getMinutes();
!@j,sq9g5Or(Cjf `?-R9W }
/LKP QW9l //返回秒数,范围0-59
D P0jW`\ function getSeconds() {奥古多媒体]/NM$NX&FT
myDate = new Date();
&F1UGEJ0c;@8K+b.z return myDate.getSeconds();
7Ab+L|-fouY }//返回一个4位数的年份,如2004奥古多媒体l5yyU F&G^
function getYear() {
H'do2d"X? W&y myDate = new Date();奥古多媒体S w$u;htn\p
return myDate.getFullYear();
!l3U(zGG$C$Y!M6F }
jjmhk!`D#[5h //返回月份,范围1-12
kx'nP3@N function getMonth() {奥古多媒体%M"~V,OynA
myDate = new Date();
!CrNSEo ] return myDate.getMonth()+1;
5B{#A2mtA9w(~h }奥古多媒体a p%oql:q
//返回日期,范围1-31
2I8gV.a LR,T~ function getDate() {奥古多媒体zSz"Bh+or!i`
myDate = new Date();
k Un'np,|6D return myDate.getDate();奥古多媒体&j`%e8L?
}奥古多媒体.aR F2Q.sO{+sm
//返回星期,范围0-6,0表示星期天奥古多媒体!T'S5P7J&O?n dD
function getWeekDay() {
J-BUM;U7i8S myDate = new Date();奥古多媒体.F} p"?isd
return myDate.getDay();
B*u&re&ek.j+Y e0s4A.}'m }奥古多媒体8W!BT5^(S'vY e)x

O.h.z!w,Fd Z Z   下面我们,将其导入到到D2004中,放置到第一个通道上(这里我们给该精灵取了一个名字“DateObj“,这样就算放到其他通道我们也不用改代码了,这也是2004新增的特性),放在舞台显示区外面(因为我们只用其中的函数而不需要显示它),这样我们就可以调用里面的函数了,代码如下(这是一个电影脚本里面的全局函数):
yBg7ab/L
5_6]$bR$Vp[ on ShowTime奥古多媒体m7?0y/k WX(O-F8o
--因为后面要多次用到 sprite("DateObj") ,故把它赋给一个变量,以后就可以当作一个对象调用。奥古多媒体eP&mdt+o
Date=sprite("DateObj") 奥古多媒体5N!C:sB9W*M
奥古多媒体\pR%h^i v
DL=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]奥古多媒体qv%m5c*s
--将取得的星期几通过列表转换成中文奥古多媒体;Ou3xz1]V K v
w=DL[Date.getWeekDay()+1] 奥古多媒体 w;Z#YC}$X3N
奥古多媒体.T*k6YE%v
--过得年月日
s~$a p(q d=integer(Date.getYear()) & "年" & integer(Date.getMonth()) & "月" & integer(Date.getDate()) & "日"奥古多媒体Rx5H8W;k!uC){X

p;P? A2OZ2n5Y --获得时分秒
Z(z `fe,Vs Ol"] h=integer(Date.getHours())奥古多媒体V `bq&F*E
奥古多媒体5\C0W'l*uU*P[)i+JB
--不直接用m=integer(Date.getMinutes(),而是m=string(integer(Date.getMinutes())+100),奥古多媒体d Ga0bL
--然后用 delete char 1 of m,删除第一个字符,使其始终保持长度为2,如8点01分就会显示奥古多媒体M5d*`$t0BI
--为08:01而不是8:1 奥古多媒体*`E:E#@ f.c)Q
m=string(integer(Date.getMinutes())+100)
9QA%k9E h8[$D/^}c delete char 1 of m
v0~!hHQ h7f^ C s=string(integer(Date.getSeconds())+100)
@Rr+J-p p H!By delete char 1 of s
F Sn7q+H
hIhlB&Y t=h & ":" & m & ":" & s 奥古多媒体6?8oZb)cV#hQ \Hj
--将得到的内容给timeText member 来显示。奥古多媒体6Ml8mxe]`
put w & "-" && d && t into member "timeText" 奥古多媒体N]VA&Y][aS
end奥古多媒体 |5}HQGW K

k%f8SL(U,M   最后在帧脚本中加入下面代码就可以显示当前时钟了。奥古多媒体txV&JJ(Ow
on exitFrame me
2|f!] x'gY4P ShowTime()奥古多媒体s|/~)F {U
go the frame
{ Z-JOIv`` end
z+prDq y:etJ?,J 奥古多媒体/m(? w9MKe
   看看是不是舞台上有一个动态更新的时钟了。我们还可以做成很漂亮的指针式时钟等等。
XXe1z&DUZ UxI
RJ!|.t9R!fwMD{(RZ 这里还是有个小问题,就是函数的返回值是整型的到了D中却变成了浮点型(所以要用integer函数来转成整型),当然这对我们使用影响不大,但还是值得注意。奥古多媒体i8cm[8k-^3AM

,J&Y0v2M/hA 这里我们通过一个简单的例子说明了如何在D 2004中调用Flash里面的函数(这里我们是调用的自定义函数),这给我们的创作带来了更大的灵活性。奥古多媒体+\tp i)M
奥古多媒体 q T.SD@4b2Q H
 下载范例

字号: | 推荐给好友

 

评分:0

我来说两句

seccode


最新歌曲
转机 放生 黄玫瑰 摇啊摇 那滋味 擦肩而过 你若成风 幸福一辈子 依然在一起 吻得太逼真 感动天感动地 坐上火车去拉萨 怎么会狠心伤害我
心碎 冲动 小太阳 别碰我 蒲公英 爱情小偷 只要不亏 一定要爱你 等爱的玫瑰 无情的温柔 北极星的眼泪 最后一次的温柔 亲爱的那不是爱情
光荣 火花 下雨天 我可以 樱花草 为你写诗 独家记忆 再见小时候 寂寞才说爱 忘不掉的伤 爱上你是个错 第三者的第三者 孤独的时候可以抱你
假如 城府 是非题 有缘人 舍不得 我的答铃 只欠秋天 外滩十八号 越爱越难过 123木头人 爱走了心碎了 爱上你是我的错 爱情里没有谁对谁错