由于空间有限,有些资源在本地放置一段时间后,我会将资源链接改到国外下载空间上并进行说明。通常这些国外空间都可以用FreeRapid这个软件下载。欢迎大家常来多交流: )
class rkuk implements ActionScript我的ActionScript小路 |
由于空间有限,有些资源在本地放置一段时间后,我会将资源链接改到国外下载空间上并进行说明。通常这些国外空间都可以用FreeRapid这个软件下载。欢迎大家常来多交流: )
尝试了一下google buzz感觉很方便,有朋友告知我可以把blog和buzz关联,这样更方便了。欢迎各位朋友在buzz中关注我的blog,buzz地址是:rkuk.org@gmail.com
要做文字的3D效果不容易,通常的3D引擎做出来的3D文字也是没有厚度的,最近学习了一下Flint,发现创建有厚度的3D粒子文字就容易多了,但是Flint本身提供的3D zone没有这个功能,花了一晚上自己写了一个,请大家瞅瞅,最近做了好几个粒子效果的东西,虽然很菜但是也想show off一下呵呵。
在下面的demo中输入要显示的3D文字内容和粒子数量点play即可看到效果,可以拖动和用鼠标滚轮缩放,大概能看出文字是有厚度的 : )
最近学习Papervision3D,了解了一些3D变换的相关知识,想动动手,用Flash Drawing API做了一个简单的3D球体效果,贴上了火星表面图,看起来3D的效果不是太强烈,因为没有光影渲染,单个球体也不需要Z排序,实现起来比较简单,不过看着它转起来,再用鼠标拖动几下还是觉得有点收获。Papervision3D中目前没有使用Flash 10的Drawing API,我想要是什么时候Papervision3D能用新的API来做渲染的话,肯定效率会更上一个层次!不过目前Papervision3D的功能和性能已经非常令人敬佩了,希望能快点入门:) ...
休息了几天,接着TweenLite初始化过程开始。第一步就是在用户设置了ease函数的情况下,替换默认的ease。
如果用户指定的ease函数还需要输入一般ease函数所需的四个参数之外的其它参数,那么这些参数应定义在vars.easeParams中,这时TweenLite tool会使用一个easeProxy函数将用户指定的ease函数封装,以保证能够把额外的参数传入到用户指定的ease函数中。
接下来初始化两个变量cachedPT1和propTweenLookup,在后面的初始化过程中会用到这两变量,其中cachedPT1用于引用一个PropTween对象,propTweenLookup用于根据target被操作的属性查找操作其变化的PropTween,但其实在构造函数中已经对propTweenLookup进行过初始化,因此这里的初始化实际是多余的,可以删除掉。
该进入TweenLite自身的渲染过程了,也就是TweenLite.renderTime方法。这个方法是TweenLite tool中最复杂的操作之一,如果是第一次渲染还会在此过程中执行一些渲染前必要的初始化。再次强调一下这个方法中的time参数已经和父级时间线的时间相对独立开了,这里的time就是相对TweenLite起点状态经过的时间,并且这个时间并不像root时间线的绝对时间只会增大。这里的time当TweenLite正向运行的时候就在逐步增大,TweenLite如果反向运行那么这个time就在逐步减小,并且可能会减小到小于0。ok强调完毕那还是从代码开始:
上一篇中TweenLite已经建立完成,接下来就要开始渲染了。在TweenLite tool中所有TweenCore对象(包括TweenLite、TweenMax、TimelineLite、TimelineMax以及root时间线对应的类SimpleTimeline)的渲染方法都是renderTime,这里体现了按接口设计的原则,也就是告诉对象要做什么,但是具体怎么做就由对象自己实现。再说具体点就是渲染发生的时候只通知对象调用renderTime方法,但renderTime方法内执行些什么,就由TweenLite、TweenMax、TimelineLite、TimelineMax和SimpleTimeline自己负责实现。这5个类的renderTime方法的具体实现各不相同,但也有近似的地方,可以划分为两种类型:第一种是Tween类的renderTime(包括TweenLite、TweenMax),另一种是时间线的类的renderTime(包括TimelineLite、TimelineMax和SimpleTimeline)。概括的说:第一种类型的renderTime主要实现操作target的属性更新,第二种类型的renderTime主要实现通知包含在该时间线上的TweenCore对象进行渲染。
Ok,接着上一篇从TweenCore构造函数中返回后,就来到了TweenLite自身的构造函数中,这个过程中完成的操作有如下部分:
1 记录被TweenLite操作的target。
2 创建propTweenLookup对象,在后面会具体说明这个对象用于根据操作的属性,查找到实际操作这个属性的PropTween对象,例如查找操作MovieClip对象x属性的PropTween,这样便于实现TweenLite.killVars方法。解释一下这个方法的作用:一个TweenLite对象可以同时对对象的多个属性执行Tween,例如同时让MovieClip的x和y都增大,但是如果用户在Tween的过程中不想让TweenLite再改变MovieClip的x属性,但同时又要保留这个TweenLite对象继续增加y,那么就可以通过killVars取消操作某个属性。
接着第1篇中开始updateAll的说明:
在updateAll中,渲染的过程是由rootTimeline.renderTime和rootFramesTimeline.renderTime发起的。这里就需要说明一下TweenLite tool的root时间线。root时间线包含rootTimeline和rootFramesTimeline,是整个Tween过程的绝对基准时间线。其中rootTimeline是所有以秒计时的TweenLite、TweenMax、TimelineLite、TimelineMax对象的时间基准;而rootFramesTimeline是所有以帧计时的TweenLite、TweenMax、TimelineLite、TimelineMax对象的时间基准(通过创建对象时在vars中设置useFrames标志,可以指定对象以秒计时还是以帧计时)。
TweenLite是一个高效、灵活的开源ActionScript缓动工具包(部分plugin没有开源),对于pure code来说,是个不错的创建动态效果的工具。“缓动”这个词是从网上看来的,按我的解释意思就是实现对象从一个状态到另一个状态转变的过渡效果。我觉得“缓动”并没有清楚的表达出过渡的意思,乍一看还以为是延迟一会儿再动,但我也找不出更好的词来形容,我还是更喜欢用Tween来称呼,不得不承认在科技领域还是英文描述得准确,中文就是稍有欠缺,毕竟现在西方的科技遥遥领先。话题跑偏了,还是接着说TweenLite吧,最近接触到TweenLite,觉得使用挺方便的,不过有时候还是会遇到点使用问题,再加上好奇心的唆使,从而展开了对TweenLite源码的窥视,我想把这个学习的过程记录下来,一方面和大家一起探讨,另一方面也当做一个记录让自己以后可以复习。罗嗦了一大堆,接下来就开始吧!首先如果你想要获得TweenLite以及相关介绍,可以到这里:www.tweenlite.com
还要先说明一下:因为TweenLite工具包中有一个类的名字也同样是TweenLite,为了区分TweenLite工具包和TweenLite类,我在以后会分别把TweenLite工具包叫做TweenLite tool,而TweenLite类就直接称呼TweenLite。我想接下来要讲的内容还是不少,不能一次写完,就分段来吧,也尽量把blog更新:)ok接下来真的开始啦!
基本上从来都是自己写代码,没有和其他人共同开发过,不免也是一个遗憾,少了互相学习的机会。但是在一个人的代码开发过程中,版本管理也是十分重要和必要的,从前一直用VSS,现在都到了并行时代,CPU都已经4核了,版本管理也不能停留在VSS的单一状态了,花了点时间学习了一下当下比较流行的SVN,有点收获,不过短时间的学习太肤浅了,只能把粗略的了解记录下来,以后再来回望。
blog挂了几天,终于恢复了。前几天看了一下教程里的RSL使用,引发了一些思考,尝试以后才发现AS 3中对导出类设置相对AS 2发生了变化,真是粗心啊,这么重要的变化之前竟然一无所知,这直接影响swf的proloading。还好这次偶然的机会没有错过,又深刻体验到了一个道理:很小的一个现象也许隐藏着深刻的内涵。下面就把AS 3和AS 2中设置类在第几帧导出的规则总结一下。