当前位置:首页 > 软件开发 > web
firefox

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,如图1所示:



图2

下面按照特效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 chars _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--;//its important.dont 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个在舞台的中间,如图3所示:



图4

然后就要设置控制特效的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,然后运用到主场景中,这样,您的特效就越来越多,这也可以成为积累文字特效的一种方法。


 ↓相关文章:
© 2006-2008 All Rights Reserved