上一篇 | 下一篇

自动系统事件的多重触发

发布: 2007-1-25 13:33 | 作者: alphachi | 来源: aougu.net | 查看: 191次

  Director中的自动系统事件共有九种,分别为prepareMovie、startMovie、stopMovie、beginSprite、endSprite、prepareFrame、enterFrame、exitFrame和stepFrame。利用这些事件,能够完成类似导航与变量初始化等一些关键任务。奥古多媒体!c|'P [#C1d/[%P%Y-n(N
奥古多媒体 o-vZ`6a {2x
  根据不同的需要,可以在各种脚本中处理自动系统事件。由于Director中的脚本种类繁多,包括了影片脚本、帧脚本、角色脚本、演员脚本和父代脚本,所以很容易构成多重触发,其最终结果经常难以预计。奥古多媒体(C%[#e|,?0Os

@ R]$b(RH [ s)\*J#L)C   下面将通过具体的测试来分析各种情况下自动系统事件的多重触发,从而为处理好这些事件奠定基础。奥古多媒体 }4\)hAK6r]x
奥古多媒体G+CsW@9W(}$CO
  由于本文并未涉及面向对象的相关技术,所以stepFrame事件与父代脚本均不在讨论范围之内。奥古多媒体],NxE G c0~|/S)b"Y(f
奥古多媒体"i6wXY(|s_Kr$H
  一、构建测试环境奥古多媒体r.i%_bk:l A3oL

E czaUIy2E1O   测试影片中包含了影片脚本、演员脚本(依附于位图演员)、角色脚本和帧脚本各一个,分别写入了全部自动系统事件的处理程序。在影片播放过程中,只要触发了相应的事件,就会在消息窗口中显示事件处理程序的运行结果,进而即可判定来源,同时也能够确定事件触发的顺序。
N&Q agJ 奥古多媒体!xCL2@.dg;D
  为了便于测试,请关闭影片的循环播放模式。奥古多媒体3Z&^ akY:i*?h

kLm0~.u B^
测试影片

Qy HG Z J:O 奥古多媒体&P*JLbyR\0@tv
  二、确定标准流程
'}I#Wk)JHi 奥古多媒体KJ%p[9\
  回转并播放测试影片,结束后消息窗口中的内容如下所示:奥古多媒体)a0L;^G!p1Y/w
奥古多媒体,kOL,H9q|_#V
-- "Movie's prepareMovie"奥古多媒体} nWfR
-- "Frame's beginSprite"
3oD+v2w6WdU -- "Sprite's beginSprite"
_4O$}v!_#tBK -- "Sprite's prepareFrame"奥古多媒体q/mG-e3Fkh.N
-- "Frame's prepareFrame"奥古多媒体p:p y~ ^5K\U
-- "Movie's startMovie"奥古多媒体,nEFt @AR
-- "Sprite's enterFrame"
I/kQ3N.F9kb7W -- "Frame's enterFrame"
iu'r/`d J8x/JX -- "Sprite's exitFrame"奥古多媒体&_|2cX&i]D
-- "Frame's exitFrame"
6m4N IkcAqF#zj S -- "Movie's stopMovie"
9wV5Y^6rc -- "Frame's endSprite"
Z?m&AS4i C6k -- "Sprite's endSprite"

}7W8X}H"x6S
a"E#x9];U/h"s   以上便是自动系统事件的标准流程,即这些事件触发的先后顺序。下面的测试将基于此流程进行。
4M p ~"\R1]7uj;c 奥古多媒体Gr:i;COw_+r\ ns
  三、进行测试奥古多媒体 kN:J&jWb T!Z
奥古多媒体L qv8c-iEe
  首先列出所有可能的脚本组合,然后通过对脚本代码的注释与取消注释来构建这些组合,影片播放完毕之后记录消息窗口中相应的内容。为了遍历所有的情况,共需进行15次测试。奥古多媒体0J4Q4ZLY)MX

V;\8}hZ9?

lF+Xl m.PA 图1 测试记录

6jf3ve,OfT8f~ 奥古多媒体%[!NW^&uZ,O%^
  在测试记录中,除了Flow列按标准流程依次列出了全部自动系统事件之外,其他各列均记录了某种脚本组合(在第2行用粗体表示)下事件的触发情况。以MFSC列为例,MFSC表明测试时激活了全部四种脚本,即影片脚本(Movie Script)、帧脚本(Frame Script)、角色脚本(Sprite Script)和演员脚本(Cast Meber Script),而整个测试过程中被触发的事件依次为:影片脚本中的prepareMovie事件,帧脚本中的beginSprite事件,角色脚本中的beginSprite事件,角色脚本中的prepareFrame事件,帧脚本中的prepareFrame事件,影片脚本中的startMovie事件,角色脚本中的enterFrame事件,帧脚本中的enterFrame事件,角色脚本中的exitFrame事件,角色脚本中的exitFrame事件,影片脚本中的stopMovie事件,帧脚本中的endSprite事件,角色脚本中的endSprite事件。
]!z-s.\ J
0F/Wn$o6Y$W   四、测试记录分析奥古多媒体M G,jj0a!I

-T,Y?eYih9a$F*r Y   从1X下各列可以看到:prepareMovie、startMovie和stopMovie事件只有置于影片脚本中才会被触发;beginSprite和endSprite事件只有置于帧脚本和角色脚本中才会被触发;prepareFrame、enterFrame和exitFrame事件置于任何脚本中都会被触发。
C4wdr b8Eg!h 奥古多媒体fR:KR M e^Y;O
  从beginSprite与endSprite行可以看到:如果beginSprite或endSprite事件被同时置于帧脚本和角色脚本中,那么帧脚本中的将先被触发。奥古多媒体&F%c?S[
奥古多媒体Ni%o8B"om
  从prepareFrame、enterFrame与exitFrame行可以看到:对于prepareFrame、enterFrame或exitFrame事件,如果被同时置于帧(或影片)脚本和角色(或演员)脚本中,那么角色(或演员)脚本中的将先被触发;如果被同时置于帧脚本和影片脚本中,那么只有帧脚本中的会被触发;如果被同时置于角色脚本和演员脚本中,那么只有角色脚本中的会被触发。奥古多媒体,[/D^/L3ZS
奥古多媒体vI @.`.O5eY,t%x
  五、自动系统事件的处理建议
6h|E*H3u\%B 奥古多媒体 L$wN { ?!_,O^0T8[ j`
  prepareMovie、startMovie和stopMovie事件应置于影片脚本中;beginSprite和endSprite事件需要置于帧脚本或角色脚本中,帧脚本中的处于高优先级;prepareFrame、enterFrame和exitFrame事件可以置于任何脚本中,角色脚本和演员脚本的处于高优先级,帧脚本和影片脚本的处于低优先级,同优先级下前者抑制后者。

字号: | 推荐给好友

 

评分:0

我来说两句

seccode


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