艺虎动画 > flash制作运动出现的文字

flash制作运动出现的文字

翼虎动漫   2010-7-10

 

 

 

 

步骤1:

先看一看整体的图层布局(如图一):共四层:从上到下:第一层是button层,放的是一个开始按钮;第二层是AS层:没有其他元件,是专门用来添加AS代码的图层;第三层是text层,放的是一个输入文本框;第四层是MC层,放的是一个实现文本动态出现的MC(下面会具体介绍其做法)。




步骤2:

准备各种需要的元件:

a)首先做简单的,制作一个开始按钮(你可以精心制作,搞的漂亮一点),放在单独的图层中,图层名为button;
b)制作一个输入文本框,其变量名为:text。定义变量名的方法 如图二 所示。也把他放在一个单独的text图层中;

c)制作最重要的一个元件,也就是产生动态效果的MC:新建一个MC元件,命名为wenben,进入其编辑状态,在编辑区做一个动态文本框,变量名为:tt(给动态文本添加变量名的方法与图二类似)。大概够容纳一个字母的大小,然后右键选中这个动态文本框,将他也转化为MC元件,名称为:wb ,实例名为:b。(给MC定义实例名的方法参看图四)接着添加一个新的图层(图层属性为引导层),画一条直线,然后让wb这个元件沿这个直线做位移渐变,中途再适当添加关键帧,让他的大小,角度作些变化。完成后的wenben 这个MC的各个关键帧的情形参看图三(系列)。说明一点:在第八和第十六帧之间,wb做的是旋转两周的运动。

d)回到主场景新建一个图层,名为MC。把wenben 放入其中适当位置(具体参看后面提供的源文件),添加实例名为a

e)将上述所有图层延长到20帧;

至此,所有相关元件准备完毕。


步骤3:
开始着手最关键的部分,添加AS代码:

新建一个新的图层,图层名为AS,共20帧:

第一帧:
text="happy new year!"//初始化输入文本框的内容,这一内容可以在SWF文件中修改;
stop();


第二帧:
ll = length(text);//获取输入文本的字符串的长度(其具体用法参看后面给出的相关语句的用法解释)
i = 1;//初始化用于变量i的值;

第三帧:
duplicateMovieClip("a", "a" +i, i);//复制实例名为a的影片剪辑;
setProperty("a" + i, _x, getProperty ( "a" +i, _x ) +(i*10));//设定每个子影片剪辑的X坐标值,实际上也就是设定每个字母之间的间隔。
set("a" + i + "/b:tt", substring(text, i, 1));//指定每个子影片剪辑中的b元件内tt这个动态文本的内容为text这个输入文本中的第i个字符(关于这个函数的具体用法,参看后面给出的相关语句的用法解释)。
i++;//变量i自加;

第十帧:
if (i ==ll+1) {
gotoAndPlay(20);//如果text内的内容全部显示过了,跳到20帧;
} else {
gotoAndPlay(3);//如果还没有全部显示过,则跳回第3帧继续显示;
}


或者第十帧的代码可以改为:
if (i ==ll+1) {
stop();//如果text内的内容全部显示过了则直接停止动画,不需要再跳转;
} else {
gotoAndPlay(3);//如果还没有全部显示过,则跳回第3帧继续显示;
}


第二十帧:

stop();//整个动画停止;


开始按钮:

on(press){
for(i=1;i<=ll+1;i++){
removeMovieClip("a"+i);//在开始播放新的字符串的出现前,先清除前一次的字符串;
}
gotoAndPlay(2);//开始播放第二帧
}

这样就差不多全部结束了,ctrl+enter测试!





再给出相关语句的具体用法解释(整理自AS字典):1.
substring(string, index, count)
参数:
string:字符串值,表示要抽取的字符串值。
index:数字值,表示要抽取字符串的开始位置。
count:数字值,表示要截取字符串的长度。(可选)
返回: 一个字符串值
介绍: 使用 substring 语句,可以获取指定字符串对象中从指定的位置开始截取指定长度的字符串信息。参数(string)指定要抽取的字符串值。参数(index)指定开始截取字符的位置,设置为 0 表示从字符串的第一个字符开始,如果设定该值为负数,则表示起始位置从字符串的尾部计起。参数(count)指定截取字符串的长度,如果省略该参数,则表示截取自开始位置起后面的所有字符信息。返回的字符串值,表示抽取到的字符串信息。

说明:此函数自FLASH MX起,已经不建议被使用,其功能可以被一个新函数mystring.substr代替,具体参看我整理的这个文章中的第10点:

http://www.flash8.net/dispbbs.asp?boardID=1&ID=145656

2.length(expression)
参数:
expression:字符串值,表示要获取长度的字符串值。
返回: 一个数字值
介绍: 使用 length 语句,可以获取指定字符串的长度信息。参数(expression)指定要获取长度的字符串值。返回的数字值,表示获取的字符串长度结果。