万卷书   首页 > 电脑书籍 > Flash > Flash文字特效系列教程:扭曲文字
 

  程序详解:

  看到上面密密麻麻的程序是不是有点头昏了?不急,下面就来分析分析这程序是怎么做事的吧:第1到第12行进行的是一些变量的赋值工作。其中第1、3行的变量iInitX和iInitY分别代表了影片剪辑们在舞台上出现的横坐标和纵坐标。

  1、3两行中使用到的Stage 对象是Flash MX中的新添加的。这个对象对应的是就是Flash舞台,所以,对Stage对象属性的读写就是对Flash舞台属性的操作。本程序中只用到了Stage对象的Width和Height属性。使用这两个属性要注意,当Stage.noScale属性为true,也就是影片没有被缩小或放大时,返回的就是当前播放器的宽度和高度;而在Stage.noScale属性为false的情况下,返回的就是Flash影片的宽和高了。

  第5行的变量iMax代表的是影片剪辑的总数,也就是上面所提到的“纸片”的张数。第7、9、11行的三个变量在当前这一帧里还没什么用,先放一放。

  从第13行开始到最后就是这第1帧代码中最重要的部分了。开始是个for语句,告诉Flash接下去要开始循环了,而循环计数从1到iMax依次递加,也就是一共要循环iMax次。第14行到31行是要不断重复做的事情——复制Text影片剪辑和相应的Mask影片剪辑。

  第14行和第16行使用attachMovie函数从Library中分别复制Text和Mask到舞台上。就拿iMax=30,i=1时来说吧,它所代表的意思就是,“复制Library中Text影片剪辑到第2*30-2*(1-1)=60层,然后将此实例命名为text1;然后复制Library中Mask影片剪辑到第2*30-2*(1-1)-1=59层,然后将此实例命名为mask1”。随着i的增大,可以看到代表影片剪辑的放置深度参数2*iMax-2*(i-1)和2*iMax-2*(i-1)-1的值会越来越小,这相当于从上到下地放置一张张“纸片”(不知道为什么要这么做吗?把参数前面的“2*iMax-”部分都去掉试试看)。

  第18行到29行是分别设置上一步复制出来的texti和maski的属性。这里要注意一下的是第26、28行设置遮罩高宽(也就是大小)的语句,因为遮罩的大小和影片剪辑总数iMax共同决定了扭曲效果的逼真度,换言之,遮罩越小,影片剪辑总数越大,表现的扭曲效果就越好。不过,在确定这两个值的时候还得考虑考虑系统的感受,因为效果好的代价就是速度的下降。为了在后面更方便、更快速地预览效果,建议在第一帧最后加上一句_quality="LOW" ,将影片的质量设为低,然后在影片发布时将这一句注释掉或删掉。

  第30行就是通过SetMask方法告诉Flash把影片剪辑mask i指定为影片剪辑text i的遮罩。

  3.单击选中第二帧,选择“插入/空白关键帧”菜单命令或直接按F6,插入一个空白关键帧,然后在Action面板上输入以下代码:

for (i=1; i<=iMax; i++) {

   this["text"+i]._rotation = i*iCounter;

   //旋转文字影片剪辑Text的实例

}

iDirection = (iCounter>iBound || iCounter<-1*iBound) ? (-1*iDirection) : iDirection;

//确定转动方向

iCounter += iDirection;

//计数器增一或减一

上一页 下一页