FLASH 文字特效六合一
我们平时在 flash 中见到的文字特效都是一种效果,本实例将告诉您如何将同一段文字在一个动画中实现六中不同的效果,通过简单的代码控制即可实现,下面我们就来一起学习:)
我们的制作思路是:将不同效果的 as 控制代码放到不同的 mc 中,然后通过对 mc 的调用,从而实现了对文字特效的控制。
特效控制 mc 的制作:
特效 1:
1. 首先建立一个 movie clip, 命名为 appear, 进入 mc 的编辑区后 ` ,给图层 layer1 的第 1 桢加 as:
this._alpha = 0;
var act;
stop();
// 初始化,设置文本开始为不可见
2. 在第 2 桢插入一个关键桢,然后用文本工具画一个文本框,并在 properties 面板中设置此文本框为 dynamic text 动态文本框,并给文本框设置变量名 text,
3 .然后在第三桢插入一个关键桢,加如下 as:
if (this._alpha<100) {
this._alpha = this._alpha+4;
gotoAndPlay (2);
} else {
this._alpha = 100;
stop ();
}
// 通过对文本 _alpha 透明度属性的控制,实现文字渐显的效果,
下面按照特效 1 完全一样的方法,制作其余 5 个特效控制 mc, 唯一一点不同的是每个 mc 的第 3 关键桢的控制代码不同,分别如下所示:
特效 2(mc falldown)
if (this._alpha<100) {
this._alpha = this._alpha+5;
this._y = this._y+2;
gotoAndPlay (2);
} else {
this._alpha = 100;
stop ();
}
// 在特效 1---- 文字渐显效果的基础上,通过控制文本的 _y 属性实现文字的下坠效果
特效 3(mc random x&y)
a=this._x;
b=this._y;
if (Number(a)!=_root.rancon:x[i] or Number(b)!=_root.rancon:y[i]) {
this._x=this._x+(_root.rancon:x[i]-Number(a))/15;
this._y=this._y+(_root.rancon:y[i]-Number(b))/15;
//read the origan values in the rancon mc and set step number!
chax=Math.abs(this._x-_root.rancon:x[i])
chay=Math.abs(this._y-_root.rancon:y[i])
if(Number(chax)<1 && Number(chay)<1){
this._x=_root.rancon:x[i];
this._y=_root.rancon:y[i];
}
this._alpha = this._alpha+5;
gotoAndPlay (2);
} else {
this._alpha = 100;
stop ();
}
// 通过利用 random() 随机函数控制字母的 _y 和 _x 属性,来达到字母随机出现在舞台上, // 并渐显的效果
特效 4(mc x && y)
if (this._alpha<100) {
this._alpha = this._alpha+5;
this._y = this._y+2;
this._x= this._x+2;
gotoAndPlay (2);
} else {
this._alpha = 100;
stop ();
}
// 通过控制字母的 _x 和 _y 属性,实现文本从舞台四周向中间靠拢的效果
特效 5(mc xscale)
if (this._alpha<100) {
this._alpha = this._alpha+5;
this._x = this._x+5;
this._xscale = this._xscale-100;
gotoAndPlay (2);
} else {
this._alpha = 100;
stop ();
}
// 通过控制字母的 _xscale 属性,实现字母横向伸缩并渐显的效果
特效 6(mc yscale)
if (this._alpha<100) {
this._alpha = this._alpha+5;
this._y = this._y+3;
this._yscale = this._yscale-50;
gotoAndPlay (2);
} else {
this._alpha = 100;
stop ();
}
// 通过控制字母的 _yscale 属性,实现字母纵向伸缩并渐显的效果
到此,六种文字特效的控制代码就写好了,下面还需要编写对 mc 控制代码进行控制的 mc, 听起来蛮复杂的,其实很简单的,请跟我来。
总体控制 mc 的制作:
新建一个 movie clip 组件,命名为 con, 插入三个关键桢,在第 1 桢添加如下 as:
i=1;j=1;m=50;n=1;
var b =new Array();//ready for random
textnumber=length(_root:text);//read the length of text
for(i;i<=textnumber;i++){
duplicateMovieClip("/text", "text" add i, i);
set ("/text" add i add "/:text", _root:text.charAt(i, 1));//write a value from text to the duplicate mc
_root["text" add i]._x=30+n*9;//set the char's _x
_root["text" add i]._y=m;// set the lines
if(i%45!=0){
n++;
}else{
m=m+30; //change the number of lines
n=1;
}
}
for (j;j<=textnumber;j++) {
a=1+random(textnumber);
if (Number(eval("/text" add a add "/:act"))==0) {
b[j]=a;//thank for janlay to make me understand how to range random number
set("/text" add a add "/:act",1);//to diffrent the true or false.
}else{
j--;//It's important.Don't forget it,or you will lost some mc.
}
}
// 利用数组,对舞台上的文本框中的单个字母进行存取,并加以控制,结合各个不同特效的控制代码,从而实现了不同效果的实现。
再第 2 关键桢加入如下 as:
_root["text" add b[j>.play();
在第 3 关键桢加如下 as:
j--;
if(Number(j)>=0){
gotoAndPlay (2);
}else{
stop();
}
// 判断文本是否已经都处理完
好了,游戏的所有控制部分都做好了,剩下的任务就是把它们组织到一起,布置主场景了。
布置主场景 :
回到主场景中,分别在图层 layer1 的 1,3,5,7,9,11 桢插入 6 个关键桢,每个关键桢的内容基本上也是相同的,首先以第 1 关键桢为例说明。
首先我们制作一个简单的按钮,用来选择不同的特效,然后依此排列 6 个在舞台的中间,
給第 1 个按钮加 as:
on (release) {
gotoAndStop (1);
}
給第 2 个按钮加 as:
on (release) {
gotoAndStop (2);
}
給第 3 个按钮加 as:
on (release) {
gotoAndStop (3);
}
給第 4 个按钮加 as:
on (release) {
gotoAndStop (4);
}
給第 5 个按钮加 as:
on (release) {
gotoAndStop (5);
}
給第 6 个按钮加 as:
on (release) {
gotoAndStop (6);
給第 1 个按钮加 as:
on (release) {
gotoAndStop (1);
}
給第 2 个按钮加 as:
on (release) {
gotoAndStop (2);
}
給第 3 个按钮加 as:
on (release) {
gotoAndStop (3);
}
給第 4 个按钮加 as:
on (release) {
gotoAndStop (4);
}
給第 5 个按钮加 as:
on (release) {
gotoAndStop (5);
}
給第 6 个按钮加 as:
on (release) {
gotoAndStop (6);
}
// 上面的代码作用都一样,都是跳到有某种文字特效控制 mc 的那桢,以便 mc 对文字
// 进行控制
最后給第一桢加 as: stop();
然后需要设置我们的主角,表演特效的文本,用文本工具在舞台的上方写一些文字,内容可以任意,注意,不要写在舞台上哦,一定要写在舞台的上方,然后就要设置控制特效的 mc 了,将 mc con 拖到场景中,在 properties 面板中取名为 con, 这个控制 mc 是每一祯都需要的,因为它的作用是控制动画总体,然后每一桢再放入分别控制不同特效的控制 mc, 都在 properties 面板中取名为 text, 将 mc appear 放到第 1 桢,将 mc falldown 放到第 3 桢,将 mc random x&y 放到第 5 桢,将 mc x && y 放到第 7 桢,将 mc xscale 放到第 9 桢,将 mc yscale 放到第 11 桢,最后,给每一个关键祯加上 as:stop(), 即可。
到此为止,整个动画就完成了,您也可以将自己的特效做成单独的控制 mc, 然后运用到主场景中,这样,您的特效就越来越多,这也可以成为积累文字特效的一种方法。

