快速业务通道

Actionscript制作的文字动画效果

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-10

Actionscript制作的文字动画效果



SWF文件:
点击浏览该文件
原文件:
点击浏览该文件

这篇教程将会讲述怎样用actionscript来做动画文字效果.为了能够完全的理解这篇教程,你应该懂得Flash的基础知识以及变量,怎样复制mc,循环和mc的属性等等知识点.

方法

方法就是做一个叫做"letters"的mc,它还包含了一个也叫做"letters"的文本框(你也可以自行选择一个自己觉得更为舒服的名字).而这个mc又被嵌套在另一个叫"ani"的mc里,因为在这里包含着文字的动画过程.这样的结构使得在经过一段时间间隔之后会复制mc,然后根据一个变量来设定里面的文字并使之播放.而通过用"Set Property"函数我们就可以确定所有字母都被放到了正确的位置.

初始化环境

当你打开原文件的时候就会看到有三个层,不过只有"ani"层和"actions"层是必须的.在"actions"层的第一帧我们把环境初始化.下面是其代码:

text = "The Passionate World is round. For days we sail, for months, and still the way is new; strange stars. Drawn to you, taut over time, ropes connect this floating floor to the wind, fraying into sound. To arrive is to sleep where we stop moving. Past the shoal of clothes to that shore, heaped with debris of words. A hem of salt, white lace, on sea-heavy legs. Love longs for land. All night we dream the jungle''s sleepy electricity; gnashing chords of insects swim in our ears and we go under, into green.";
startx = 90; /*第一个字母的_x*/
starty = 45; /*第一个字母的_y*/
setProperty("_root.ani", _visible, false);
length = length(text);
linelength = 50;
kerning = 6;
charinline = 0;
linenumber = 1;
linespace = 12;
i = 1;
x = 1;
lettercount = 1;

其中第一个变量"text"就是我们想要它有动画效果的一段文字(这段文字是我从网上找到的Anne Michaels的一首诗).而接下来的两个变量是我们需要的水平方向和垂直方向的起始点.再下来我们把mc"ani"的显示属性设定成false(或者设定为0,结果都是相同的)使得它变的不可见.变量"length"表示我们需要的动画文字的长度是多少,而对于控制循环来说它是非常重要的.变量"kerning"表示字母之间的间隔,而变量"charinline"记录着每一行文字的运动轨迹.变量"linenumber"和"linespace"记录着一共有多少行和行间距.最后的几个变量中,"i"和"x"用于控制循环(我个人比较喜欢用两个变量,当然你也可以只用一个),而"lettercount"用来控制文字的消失.
制作文字

在第十帧有如下代码(帧数其实并不要紧,也可以是其他的帧,比如第二帧):

charinline = Number(charinline)+1;
if (Number(charinline)>=Number(linelength)) {
prevent = substring(text, i-1, 1);
if (prevent eq " ") {
linenumber = Number(linenumber)+1;
charinline = 1;
}
}
duplicateMovieClip("_root.ani", "ani" add i, i);
setProperty("ani" add i, _x, Number(startx)+Number(charinline*kerning));
setProperty("ani" add i, _y, Number(starty)+Number(linenumber*linespace));
set("_root.ani" add i add ".letters.letters", substring(text, i, 1));
i = Number(i)+1;
首先,我们把变量"charinline"加上1,这样做是因为我们要放入一个字母.再这之后我想知道的是在一行里同时出现多少字母比较合适.这样的话,我们在加一个变量"prevent",用它来保证每一个新加的字母不是出现在新的一行,而这个字母必须是一个词的一部分,并且放置的位置在(i-2)行上. 然后我们在把变量"linenumber"增加1并且把"charinline"设为1,这是因为我们起用了新的一行.接下来是复

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号