您的位置: 首页 > 技术文档 > 多媒体制作 > FLASH 5 教程 — Flash 影片控制
多媒体的文件格式 回到列表 FLASH 5 教程 — Flash 外部控制
 FLASH 5 教程 — Flash 影片控制

作者:爱老虎油 时间: 2003-04-23 文档类型: 来自:蓝色理想

第 1 页 FLASH 5 教程 — Flash 影片控制
第 2 页 FLASH 5 教程 — Flash 影片控制 下

6.3 快进与快退

快进与快退技术似乎是影音播放机的行为,不错,你已经可以在这个程序当中了解到用Flash制作影碟播放机的作用了。在这个代码里你还可以了解到电影剪辑和场景之间的路径是如何使用的,让_currentframe和_totalframes返回场景的属性想必已经在上例接触过了,但如果是想在电影剪辑里控制场景的播放顺序就要看本例的制作了。另外本例中一个重要的学习就是关于控制类电影剪辑的使用。这也是Flash动画实现控制的一个重要概念,因为所有的控制一般都有一个过程,比方说我们想让播放的帧和一个数字进行比较,如果当前帧大于某个数字的话,哪么就执行某个功能。如果没有,就继续播放。这个功能就需要对两个数字进行不断的比较,而时间轴是有过程的,如果将进行比较代码加入到按钮的Action里,哪么不点击按钮,代码就不会被执行。如果是加入到帧上的话,当帧播放时执行一次,然后就不会再执行。我们需要的是不断的进行比较,这就可以用到控制类的电影剪辑了。因为电影剪辑中的时间轴是与场景与关的,只要在场景中加入足够的帧,电影剪辑就会一直播放下去,不断的进行变量比较,来达到我们的目的。
步骤一、选择主菜单中的Window|Common Library|Bottons命令,打开共享库面板。将快进和快退按钮拖入场景。
步骤二、再次选择主菜单的Insert|New Symbol命令,选择MovieClip插入一个电影剪辑。取名称为forward,进入电影剪辑的编辑区。
步骤三、双击第一帧打开Action面板,选择Basic Actions指令集中的stop指令,使电影剪辑在起始位置停止播放。
步骤四、在第二帧处按F6键加入一个关键帧。双击打开Action面板。
步骤五、选择Actions指令集中的set variable指令加入一个变量,在Variable框中输入变量名为i,在Value栏中输入代码_root._currentframe+2。勾选随后的Expression表达式单选框。如图6-16所示。

  

图6-16 变量输入框

步骤六、哪么变量i表示的是场景的当前帧加上2了。使用goto就可以实现跳转了吗?答案是否,因为我们现在是在电影剪辑里,所以如果直接使用goto指令,哪么也只能控制电影剪辑中的指针,想要在goto指令中加入一些对场景的控制,必须有路径的支持。
步骤七、哪么并非选择的是Goto指令,而是选择Actions指令集中的evaluate指令插入一个空行,然后输入代码_root.gotoandstop(i)。像C语言一样,Action脚本编程也支持很多种的语法结构,特别是在Flash5当中使用了.语法。但很多的语法在普通模式下输入有困难,在专家模式下输入又容易出错,怎么办?利用evaluate加入空行就是一个完美的解决方案。完成代码如图6-17所示。

图6-17 Action指令中的空行指令

步骤八、回到电影剪辑编辑区,在第三帧处按F6键使之成为关键帧,然后双击打开此帧的Action面板。 步骤九、双击Basic Actions指令集中的Goto指令,在参数输入栏中其它项选默认,只在Frame栏中输入2。此举的用意是在电影剪辑内部实现一个循环。当第一帧当载的时候,电影剪辑停止播放,但是一旦有命令让帧跳转到第二帧时,哪么电影剪辑的指针会在第二帧和第三帧之间来回播放。饶开第一帧的Stop指令。
步骤十、回到场景编辑区,选择主菜单的Window|Library命令,打开库面板,把电影剪辑拖到场景编辑区任意位置,因为这个电影剪辑其实是没有物体内容的,它在场景中只会以一个小圆点来表示,当影片发布了以后不会留下任何内容。拖入后的效果如图6-18所示,你可以看到有一个小圆点。

图6-18 代表空电影剪辑的小圆点

步骤十一、使用主菜单的Window|Panels|Instance命令打开Instance实例面板。点击这个小圆点,使它成为选取状态,然后在Instance面板中为它取分身名称为forward。如图6-19所示。

图6-19 为空电影剪辑取分身名称

步骤十二、在倒放按钮上点击鼠标右键选择Action,为按钮加入指令。
步骤十三、点击Actions指令集中的evaluate加入一个空代码行。然后输入代码_root.forward.gotoandplay(2)。此句的意思为让场景上的分身名称为forward的电影剪辑开始播放第二帧。系统会自动加上On(release)行。
步骤十四、按Ctrl+Enter键测试。当鼠标点击按钮时影片开始进速播放直到影片结束。
步骤十五、然后开始制作快退按钮的指令,依然是插入一个电影剪辑。起名为backward,然后进入编辑区,按F6键使第一、二、三帧都成为关键帧。第一帧指令stop(),第三帧为gotoandplay(2)与快进按钮的一样。关键的第二帧代码如下:
i=_root._currentframe-2
_root.gotoandstop(i)
对照代码如图6-20。

图6-20 实现快倒控制的电影剪辑代码

步骤十六、回到场景,拖入这个电影剪辑,用Instance面板为它取分身名为backward。然后在按钮上加入像快进一样的代码吗?你有没有想过如果两个按钮都被按下两个控制影片播放的程序同时运行是会出错的呢?解决的方法就是当一个按钮按下时,另一个按钮的程序停止运行。
步骤十七、鼠标右键点击快退按钮选择Action项,打开Action面板。选择evaluate插入一个空行,输入代码_root.Backward.gotoandplay(2),再次点击evaluate项输入代码_root.forward.stop()。这样就实现了当点击快退按钮时快进按钮的程序段停止播放。完成如图6-21所示。

图6-21 快退按钮的完整代码

步骤十八、同样将快进按钮的指令改为:
on(release){
_root.forward.gotoandplay(2)_root.backward.stop()
}
步骤十九、按Ctrl+Enter键测试。如果你仔细看了这些程序你可以感觉到没有加入回放的代码行。一个完整的程序行是能经得起考验的,是不能存在bug的。哪么我们开始进入使之回放的程序设计。
步骤二十、在Library库面板中双击forward电影剪辑,进入forward电影剪辑的编辑区,双击第二帧。打开第二帧的Action面板。
步骤二十一、选取第一行,然后双击Actions指令集中的if指令,然后在参数输入框中输入代码i<_root._totalframes句。
步骤二十二、再双击Actions指令集中的set variable指令,输入变量名为i,Value栏中输入1,勾选后面的Expression单选框。完成如图6-22所示。

图6-22 快进电影剪辑的完整代码

步骤二十三、打开backward电影剪辑,进入电影剪辑的第二帧的Action面板。选择第一行代码,双击Action指令集中的if指令。输入代码I<1,然后选择set variable指令输入代码i=_root._totalframes。如图6-23所示。

图6-23 快退按钮的完整代码

步骤二十四、现在按Ctrl+Enter键测试应该没有什么问题了吧。
程序解读:
  按钮的程序比较简单,当快进指令的电影剪辑播放时快退按钮停止播放。快退按钮开始播放时,快进按钮停止播放。难点主要还是在功能模块的电影剪辑里。以快进功能的电影剪辑为例。
第一句:赋值变量i为影片根目录的当前帧。
第二句:在当前帧的内容大于影片的总长度时。执行if段的指令。
第三句:重新赋值变量i的内容为1,也就是重新回到影片的起始位置。
第四句:影片的播放进度停止在变量i的内容。之所以使用gotoandstop()而不是gotoandplay(),是因为我们实际的控制只是让根目录的帧实现跳转。
知识要点:
此例中用影片跳跃似的播放过程,动态的改变了影片的播放进度。比方说用功能模块实现第一帧跳到第三帧再跳到第五帧。这样一种跳跃似的前进,从视觉方面形成了影片的快进。而实际上Flash动画的播放进度除了在Movie对话框中设置以外,根本不可能在影片播放过程中动态改变。另外在此例中引入了全新的对影片路径的认识,如在Insert面板中为电影剪辑取分身名称,这样影片才会为电影剪辑设置路径。而_root代表的是根目录的时间轴,而且只能代表根目录的时间轴,你可以使用相对路径表示其他的电影剪辑。但如果你想直接使用场景的话,用_root来表示是没有错的。另外所有的电影剪辑只要是拥有分身名称的,出现在时间轴上的电影剪辑,也都可以从_root场景目录中沿伸下来,当然,未在影片播放过程中出现的,没有取分身名称的,和其它场景中的电影剪辑不能准确的描绘其路径。在制作过程中你可能会有一点发现,就是变量i在整个动画过程中出现了两次,哪么变量的内容会不会引起冲突呢?答案是不会,在Flash动画中其实并没有绝对的全局变量,虽然全局变量的概念在Flash中也会存在,但是实际上Flash并没有真正意义上的全局变量。这与其它编程软件有所不同,Flash中的变量都是向下沿伸的,比方说,在根目录下有一个变量i,而在它所属的分身名称为MC的电影剪辑中也有一个变量i,哪么它们之间会有冲突。但如果场景中有两个电影剪辑分是是MC1和MC2,它们都在场景的根目录下,属于平级,哪么它们当中的变量i将不会起冲突。如果是这种情况,一部动画中共有两个场景,Scene1和Scene2,两个场景中分别有一个变量i的话,哪么也不会起冲突,场景是Flash动画中最大的实场面了,Scene1中的变量并不会在Scene2中存在的话,哪么说Flash动画中并没有真正意义上的全局变量。但是没有全局变量,Flash却拥有真正意义上的局部变量,可以说每一个变量都是局部变量,它们只在自己的活动范围内存在,它们只在自己的时间轴中起作用。它们会向自己的下一级路径沿伸自己的作用,但如果在下一级电影剪辑的功能模块里再次出现同名变量的话,可以使用var来定义局部变量,用var来定义的变量只在自己的代码模块中存在,离开自己的代码模块将不再起作用。这样一来也不会与上一级的同名变量起冲突。使用var来定义专属模块的功能变量是一个非常提倡的做法,它对大型程序开发有独特的帮助。

6.4 倒放

通过以上实例的制作会了解到不少实现帧跳转和影片控制的方法,其实影片控制的概念就是帧跳转。你也许已经会制作下例的倒放控制了。但是如果只是停留在一种技术上沾沾自喜哪么就无法突破自己的技术,真正技术高超的人都是在不断的探索着前进的道路,也许你已经明白了控制影片播放的技术,但也许你只是通过手动学会了以上的这个实例。在以下这个倒放按钮会与前几种技术不同,但也有共通之处,原因在于所有的技术,都是通过帧跳转来达到控制,但是每一种实现方法的技术手段又都是不同的,每一种方法都让我们领略了Action编程的多样性力量。
步骤一、选择主菜单中的Insert|New Symbol命令新建一个电影剪辑。取名为back,然后进入这个电影剪辑编辑区。
步骤二、在第一帧双击鼠标插入一个关键帧,双击此帧打开Action面板。双击Actions指令集当中的if项,使之出现在程序编辑区。在输入栏内输入_root.n。
步骤三、然后双击Actions指令集中的evaluare指令,加入一个空白程序行,在输入框内输入代码_root.prevframe(),实现跳转上一帧。完成如图6-24。

图6-24 完成跳转上一帧

步骤四、在第二帧按F6插入一个关键帧。双击打开Action面板,输入与第一帧完全相同的代码。
步骤五、回到场景,在场景编辑区从Common Library共享库面板中拖入一个倒放的按钮。鼠标右键点击按钮选择Action打开按钮的Action面板。
步骤六、在按钮的Action面板中双击Actions指令集中的set variable给变量赋值。变量名为n,值为true,勾选Value输入框后面的Expression单选框。完成如图6-25所示。

图6-25按钮的完整指令

步骤七、从Library库面板中把刚才制作的back电影剪辑拖入到场景中,在表示电影剪辑的小圆点上点击右键,打开电影剪辑的Action面板。
步骤八、双击Actions指令集中的set variable为变量赋值。变量名为n,变量值为false,勾选后面的Expression单选框。系统会自动加上OnClipEvent(load)指令,与按钮的Action面板的中指令极为相似。此句的意思为当帧装载时变量n的值为假。完成如图6-26所示。

图6-26 电影剪辑的载入指令

步骤九、按Ctrl+Enter键测试。是不是也达到了倒放的效果呢?不过依然还是存在老问题,即当动画播放到第一帧时会停止,并不出现回放。解决的办法是像步退按钮一样的做法吗?可以说是。但是请注意路径的使用。步骤十、打开back电影剪辑,在第一帧双击打开Action面板。使第一行成为选取状态,然后双击Actions指令集中的if指令,使其出现在代码编辑区。
步骤十一、在参数输入栏中输入代码_root._currentframe<=1。然后再双击evaluare加入一个空行。输入代码_root.gotoandstop(_root._totalframes)。完成后请对照图6-27。

图6-27 back电影剪辑的完整代码

步骤十二、在第二帧上双击打开Action面板。操作与第一帧完全相同。按Ctrl+Enter键测试。整个动画的控制程序就制作完成了。将所有的按钮进行整合,然后测试完整的效果。你可以从中学到很多的东西。
程序解读:
电影剪辑内的指令:表示当变量n等于真时开始根目录播放上一帧,由于电影剪辑内总是两帧不断的在循环。所以也会不断的发出场景的帧回到上一帧产生倒放的效果,哪么变量n是哪儿来的呢?
电影剪辑加载指令:我们在电影剪辑上点右键输入的代码意思为当电影剪辑加载时变量n为假,这就是变量n的初始值。
按钮内的指令:很简单,当点击按钮时,对变量n重新赋值为真。激活电影剪辑内的指令。
知识要点:
此例使用变量的逻辑值来激活电影剪辑的效果,在以前各类程序中并不多见,变量的逻辑值其实可以用有和空来理解。当真时,表示有这个变量。为假时表示没有。Flash中的变量是不需要指定属性的,系统会自动指定其为逻辑值还是字符串还是数值型,当然你可以使用Number等转换函数对变量内容进行转换。

出处:蓝色理想
责任编辑:蓝色

上一页 FLASH 5 教程 — Flash 影片控制 下一页

◎进入论坛Flash专栏版块参加讨论

相关文章 更多相关链接
Flash 酷站猎手
中文ID3乱码问题MX解决方案
用AS2解决中文ID3的乱码
Flash常用效果-移动模糊效果
Flash MX 2005 制作环境预览
作者文章 更多作者文章
闪光的历程-Flash 的这五年
loading 的详细制作
《闪魂之Flash网站建设实录》
FLASH 5 教程 — Flash 影片控制
FLASH 5 教程 — Flash 外部控制
关键字搜索 常规搜索 推荐文档
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
周大福“敬•自然”设计大赛开启
国际体验设计大会7月将在京举行
中国国防科技信息中心标志征集
云计算如何让安全问题可控
云计算是多数企业唯一拥抱互联网的机会
阿里行云
云手机年终巨献,送礼标配299起
阿里巴巴CTO王坚的"云和互联网观"
1499元买真八核 云OS双蛋大促
首届COCO桌面手机主题设计大赛
栏目最新 栏目最新列表
浅谈JavaScript编程语言的编码规范
如何在illustrator中绘制台历
Ps简单绘制一个可爱的铅笔图标
数据同步算法研究
用ps作简单的作品展示页面
CSS定位机制之一:普通流
25个最佳最闪亮的Eclipse开发项目
Illustrator中制作针线缝制文字效果
Photoshop制作印刷凹凸字体
VS2010中创建自定义SQL Rule
>> 分页 首页 前页 后页 尾页 页次:2/21个记录/页 转到 页 共2个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容

杂⑦杂⑧ Gold NORMANA V2