| 程序详解:
第1行使用function关键字,声明了一个名为Resizing的自定义函数。而这个函数就是用以改变文字或泡泡大小的。我们看到,函数名后面跟有两个参数,一个是用来传递目前要进行缩放操作的对象的obj参数,另一个就是用来控制缩放速率的数值形参数iStep。第2行其实就等于obj._xscale
= obj._xscale + iStep * obj.iDirection;其意思是,将obj对象_xscale属性的值加上缩放速率iStep和缩放状态obj.iDirection的乘积后,再重新赋值给这个obj对象的_xscale属性。这obj.iDirection的值只有两种,一个是1,另一个是-1,分别表示放大和缩小两种状态(当等于1时,加号后面的值为正,对象开始变大;而当等于-1时,情况刚好相反)。因为我们想让某个文字或泡泡变大到一定程度时,开始变小,而当其小到一定程度时又重新变大。所以,这里才会想到给每个对象obj设置这么一个变量Direction,来确定是否到了该重新变大或变小的时候。第4行就是使obj对象在y轴上的缩放比例设为与x轴上的缩放比例相同(通过把obj对象的_xscale赋值给_yscale属性)。最后来看看第6行,这一行看起来似乎很复杂,其实不然。等号右边用“?:”操作符书写的代码,事实上是一个简化了的if判断语句。问号前面的内容是判断的条件,中间部分是当判断条件为真时将要返回的值,最后的部分则是当判断条件不成立时将要返回的值。这第6行所实现的功能,说实际并简单点儿,就是根据条件切换对象开始变大还是变小的状态。说得再具体点,就是当obj对象的_xscale属性(也就是x轴上的缩放比例)大于缩放速率iStep的85倍、或小于45的时候,通过给obj.iDirection变量乘上个-1来达到改变iDirection值符号的作用。
2.写完了自定义函数,下面该给舞台上的每个文字和泡泡对象添加程序代码了。选中一个文字或泡泡对象,然后在打开的Action面板中输入以下程序代码:
onClipEvent (enterFrame) {
_root.Resizing(this, 2);
//调用自定义函数
}
onClipEvent (load) {
this.iDirection = 1;
//初始化iDirection的值
}
程序详解:
第1行表明了下面花括号中的代码要在影片剪辑的enterFrame事件发生时才执行。前面我们已经看过一个load事件,那现在的这个enterFrame事件又作何解呢?我们知道,Flash影片的放映其实就是一格接一格地播放时间线上的帧,而这个enterFrame事件就发生在某个对象进入某个帧的时候。所以,放在这个enterFrame事件中的程序代码,将会在这一帧的任何其他程序代码之前被执行。这个事件的触发频率与当前影片的播放速率相当。也就是说,如果当前影片的播放速率是每秒12帧,那么在1秒钟之内将发生12次enterFrame事件。接下来看第2行,这一行就是调用上面写的用来对某个对象进行缩放操作的自定义函数。因为,我们把函数Resizing写在了主场景的时间线上,所以这里在函数名前面加了个_root,表示函数是属于主场景里的。函数的两个参数,this和4分别表示要进行缩放的对象和缩放的速率。this指代当前这段代码所在的对象。例如,你选择了最左边的泡泡,那么这里的this就代表这个泡泡对象。
3.重复以上步骤,将上面这段代码附加给舞台上的每一个对象。修改enterFrame事件中Resizing函数的第2个用来表示缩放速率的参数,这样才能让每个对象以不同的速度变化大小。例如,我们给一个对象设定代码_root.Resizing(this,
4); ,其速率为4;而给另一个对象设定代码为_root.Resizing(this,
2); 其速率为2。
4. 整个效果到此全部完成,保存作品,按“Ctrl+Enter”预览最终效果,就可以看见漂亮的泡泡文字效果。
|