ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:21.10KB ,
资源ID:16897777      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16897777.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(淡入和淡出Word下载.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

淡入和淡出Word下载.docx

1、根据本 模型,假设变化速率为0.05时,则每个时间周期,对象的透明度增加0.05。如果对象的初始透明度是0,对象在动画开始的时候完全不可见,则经历1个时 间周期后,对象的alpha变为0.05;经历2个时间周期后,对象的alpha变为0.10;经历3个时间周期后,对象的alpha变为0.15当 经历20个时间周期后,对象的alpha变为1.00,此时对象完全不透明显示。换而言之,这一过程就是动画对象在20个时间周期内从不可见逐渐切入到完 全显示状态,实现了对象的淡入。同理,淡出效果也可以使用此模型,不过变化速率是一 个负值。假设变化速率为-0.05,则每个时间周期,对象的透明度减少0.05。对

2、于一个初始alpha属性为1的对象,为当经历20个时间周期后,其 alpha值变为0.00,此时对象完全透明不可见。这一过程实现了动画对象由完全显示到完全消失的渐变效果,是为淡出。8.4.2 脚本实现考虑到淡入和淡出效果都是基于同样的数学模型,可以在代码实现时运用函数将其过程模块化。(1)建立参数fadeInOut(),该函数不需要返回值,但显然需要参数,分别是对象anim_obj,以及对象的变化速率fade_rate。代码如下。function fadeInOut(anim_obj:DisplayObject,fade_rate:Number):void return; (2) 在函数内添加

3、代码,以根据变化速率fade_rate控制动画对象anim_obj的alpha属性。本函数将来是在定时器的触发响应函数中周期调用的, 所以每一次执行时,只需要修改1*fade_rate到anim_obj.alpha即可。只需要一条语句就能达到目的。anim_obj.alpha+=fade_rate;(3)将此函数添加到例8-4中,修改定时器响应函数,注释掉原有的语句,新添加对fadeInOut()的引用。整体代码如下:var animTimer:Timer = new Timer(50, 100);animTimer.addEventListener(timer, animTimerHandl

4、er);timerComplete, animComplete);animTimer.start();function animTimerHandler(event:TimerEvent):void /动画代码编写入口/animObject1.alpha=(animObject1.alpha=1?0:1);fadeInOut(animObject1,-0.05)/新增对fadeInOut()函数的引用/响应定时器结束事件function animComplete(event:animObject1.alpha=1;/自定义的模块(4)至此,代码初步 成型了。运行程序,可以看到显示对象animO

5、bject1逐渐淡出的效果。如果把fadeInOut函数中的fade_rate设为正值,这可以令 alpha初始状态为0的不可见对象逐渐淡入。fade_rate的绝对值越小,淡入淡出的过程就越平滑,读者可自行实验。使用如此简短的代码,便能实现淡入淡出效果,可见AS3确实是很简便的动画控制语言。下一节将介绍如何进一步强化模块,使其能胜任更多的任务。8.4.3 模块的封装上节编写的模块虽然能实现简单的淡入淡出功能,但是在代码设计上并不符合OOP模块的封装规范,存在许多问题:1不利于OOP封装直接在模块内部操作对象属性,不利于OOP封装。作 为通用模块,完全可以适用于对象各种属性的相类似轨迹的运算,

6、而不是仅仅局限于操作alpha属性,例如:显示对象的红色通道逐渐淡出淡入等。然而,如果 在内部操作对象alpha属性,使得此模块的功能固化了,在其他场合下不可利用。此外,有时情况需要对运算后的数值稍作修正再传递给舞台对象,上节所写的 模块无法提供这种灵活性,在实际开发中应尽量避免这样不符合规范的模块出现,如图8-14所示。图8-14 不符合规范的模块封装2无数值检查算术运算直接赋值给对象,没有数值检查。这种习惯是危险的。如果超出了被赋值变量的允许范围,在一些情况下会出现难以预期的错误。作为程序员,应自觉养成良好的习惯,在代码中对数值进行检查。3缺少注释和模块说明当团队共享和日后维护时,缺少注释

7、和说明的代码将造成许多麻烦。实践证明:编写脚本代码时不写注释说明,无益于加快开发进度。插入注释和说明实属举手之劳,应当时时自觉为之。8.4.4 淡入淡出模块基于以上原因,需要对此模块改写。function fadeInOut(obj_attr:Number,change_rate:Number,max_value:Number=1):Number var temp_attr: temp_attr=obj_attr+change_rate; return temp_attr;在改写后的代码中,参 数obj_attr取代了anim_obj,其意义不再是显示对象本身,而是显示对象的某项属性。在模块内

8、部,也并不对此属性进行操作,而是新建了一个变 量temp_attr,其值根据传入参数运算得到。在模块的返回值中,将变量temp_attr的值传递到外部,供调用代码处理。对于模块,输入和输出都 是纯数据,模块执行本职的运算任务,并不修改对象(如图8-15所示)。这种写法就良好地体现了OOP的模块封装精神。图8-15 符合要求的模块封装除此之外,新的 模组具备了一个返回值。应该认真界定此返回值的取值范围。对于本例,简易取值是0到1的Number类型,这样,即使是那些取值在0到255之间的颜色通 道,也可以很轻松地通过255*fadeInOut()方式获得可用值。因此,添加相应的数值检查语句如下。N

9、umber, max_value: temp_attr = temp_attr /max_value; if(temp_attr=1) temp_attr=1; 相比上节中只包含一条语句的模块,此处的代码量确实增加了不少。可只要养成了习惯,书写这样的代码是很迅速的,并不会拖延开发的进度。当然,补上注释和说明也是必要的。/说明:fadeInOut()实现线性轨迹的淡入淡出计算。/参数:obj_attr为对象属性;change-rate为变化速率,正为淡入,反之淡出;max_value为对象属性取值范围。/返回值:计算后的属性值,从0到1之间的小数。/ function fadeInOut(obj

10、_attr:Number/版本1.0改写后的模块更加适合OOP开发,也便于扩展和封装进自定义方法内,在稍后的开发中持续发挥作用。随着各种模块越来越多,功能越来越强,形成各种强大的类。海纳百川,最终实现开发的整体进化,完成开发任务,这就是AS3的OOP开发过程。8.4.5 渐变闪动当显示对象在完全显示和完全消失之间切换,形成了闪动效果。当闪动两种极限状态之间存在过渡状态,则形成了渐变效果。当显示对象从完全显示淡出,直至完全消失,然后又从完全消失状态淡入,回复到完全显示,如是周而复始,就形成了交迭渐变闪动(如图8-16所示)。图8-16 线性淡出渐变和交迭渐变闪动使用现有模块,在例8-4中实现交迭

11、渐变闪动是非常容易的。(1)为了控制轨迹的走向,需要先声明一个新的变量fadeStep。并在“fadeInOut()”函数中,同animObject1.alpha一起作为参数传递。var fadeStep:animObject1.alpha=fadeInOut(animObject1.alpha,fadeStep);(2)当 fadeStep为-0.05时,对象animObject1将会淡出;判断animObject1.alpha的值,在对象消失后,重设 fadeStep为0.05,则对象animObject1将会淡入,直至animObject1.alpha=1,判断并再次将fadeStep设

12、为 -0.05,即完成了一个交迭渐变闪动的周期。if(animObject1.alpha=1) fadeStep=-0.05if(animObject1.alpha=0) fadeStep=0.05(3)考虑到变量的作用域,需要在定时器开始之前声明fadeStep全局变量,并为其赋予初始值。这样,在定时器触发响应函数中,fadeStep的值可以保持稳定。如果将fadeStep声明在了定时器触发响应函数中,则默认作为一个局部变量,每次执行都会被创建和删除,就无法起到应有的作用了。如果一定要使用在定时器触发响应函数中声明的变量,则必须增加更多的验证代码,读者可自行尝试。完整代码段如下。Number

13、=0.05; /动画代码编写入口 if (animObject1.alpha=1) fadeStep=-0.05; if (animObject1.alpha=0) fadeStep=0.05; animObject1.alpha=fadeInOut(animObject1.alpha,fadeStep); animObject1.alpha=1;Number temp_attr=temp_attr/max_value; if (temp_attr=1) 千里之行,始于足下。深刻理解和掌握功能程序模块的写法,打好基础,步步为营,日后开发具有万行代码规模的项目也并非遥不可及的事。(4)运行程序,

14、可以看到对象animObject1在舞台上交迭淡入淡出,相当平滑完美。其周期轨迹如图8-17所示。图8-17 线性交迭渐变闪动轨迹8.4.6 透明度渐变以交迭渐变闪动为代表的透明度渐变,是一种常用的动画效果。不仅可以直接使用该效果表现夜空繁星和烛光的闪烁,也可同其他显示对象灵活组合出各种变化。很多令人印象深刻的视觉特效,往往是灵活运用透明度渐变的结果。例如,可以灵活使用透明度渐变调整对象的颜色,也许听起来不太可能,但不仅可行,而且相当简单。当一个红色显示对象覆盖在蓝色显示对象上时,对红色对象应用交迭渐变闪动,最终效果是蓝色对象在蓝色和红色之间交叠渐变,实现了颜色的调整,如图8-18所示。与直接修改蓝色对象的颜色相比,此法在代码编写时更加直观。由于现代计算机处理器对透明度运算的硬件优势,采用这种机制生成的颜色过渡动画,在执行效率上还要更高一些。特别是对高分辨率的舞台显示,其优势更加明显。图8-18 利用透明度交迭渐变更改颜色

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1