求flash文字一个一个的蹦出来的代码

做一个flash,有大批的文字,和数学公式,一个个字跳出来,做补间或者遮罩比较麻烦。不知道用代码会不会比较容易。有没有大神知道这样的代码。是需要放在文字上,还是放在帧上?... 做一个flash,有大批的文字,和数学公式,一个个字跳出来,做补间或者遮罩比较麻烦。不知道用代码会不会比较容易。有没有大神知道这样的代码。是需要放在文字上,还是放在帧上? 展开
 我来答
百度网友e246de7
2017-12-02 · TA获得超过144个赞
知道小有建树答主
回答量:88
采纳率:80%
帮助的人:142万
展开全部

嗯,首先肯定你,代码确实一劳永逸,然后不得不泼你一桶冷水,这个不是给一段代码,然后贴上去就万事大吉了,你会有很多的调试工作需要做。

所以我真诚的建议,你不如把一行文字动画效果做成一个【元件A】,然后在库里【直接复制】这个元件为另一个【元件B】,然后将复制的这个【元件B】拖到舞台并且将它的文字改成下一行的,以此类推,会比较省事。

非要走程序这条路的话,我选择了AS2,比起AS3,AS2对于不懂程序的人要容易很多。

(这个是你建立文本的时候选择的ActionScript,在属性面板里可改。)

我还是先讲你使用程序的弊端吧:

1.程序里使用了动态文本,需要你将所有用过的字体中用过的文字做【嵌入】,如果你是英文文档,还好说,如果你是中文的,还有多种字体,那个调试运行起来会有一定的等待时间。(因为你需要调试无数次,会很烦。)

2.动态文本没有单向的变形方法,意思就是x方向和y方向上的缩放动画是一致的,这个也是AS2的一个问题吧我还没见过有人绕过去,AS3倒是可以。

3.如果程序不使用动态文本,会换一种逻辑实现,虽然没有上面1、2的弊端,但是蛮重复劳动力的,感觉和第一段介绍的动画方法也差不多了,不过我还是会在最后放出这个方法。

说到这里如果你依然感兴趣,并没有知难而退,就继续往下看我吧。

准备工作(两种方法都要):

首先介绍一下greensock这个牛逼的动画缓动代码程序网站。

前往https://github.com/greensock/GreenSock-AS2下载文件,下载后解压的文件GreenSock-AS2-master,将里面的com文件夹复制到你的源文件FLA所在位置。

各种参数的使用方法见详解页https://greensock.com/getting-started-as(看中间那个Tweening Basics的flash演示)

方法A:

结合图一,舞台上有2个元件,第一行文字“总……首,”做成影片剪辑mc1,注意属性面板里起名就是【mc1】,同理第二行是【mc2】。

然后我贴上as层的三处代码:

第一帧

import com.greensock.*;
import com.greensock.easing.*;
import flash.filters.BlurFilter; 


function showText(mc1:MovieClip){
var mc:MovieClip = mc1;
var txt:TextField = mc.txt;
var tf:TextFormat = txt.getTextFormat();
var bf:BlurFilter = new BlurFilter(10,0,0);

mc._visible = true;
txt._visible = false;

var i:Number = 0;
for(;i<txt.length;i++){
mc.createEmptyMovieClip(String("mc"+i),mc.getNextHighestDepth());

trace(mc["mc"+i]);
mc["mc"+i].createTextField("txt",mc["mc"+i].getNextHighestDepth(),i*26,0,50,50);//这里的26是单个字体的宽度,50和50是生成文本的宽高,只要比字体本来的宽高大就行了,数字大很多也没关系。
mc["mc"+i]["txt"].text = txt.text.substr(i, 1);
mc["mc"+i]["txt"].setTextFormat(tf);
mc["mc"+i].filters = bf;
mc["mc"+i]._yscale = 0.1;
mc["mc"+i]._alpha = 0;
TweenLite.to(mc["mc"+i], 0.15, {_yscale:100, _alpha:100, ease:Back.easeOut, delay: i*0.15});//这里的第一个0.15,是单个文字的动画时间,第二个0.15是文字间动画的间隔时长,_yscale和_alpha是y轴的缩放和透明度,这都是你要调整的
}

}

mc1._visible = false;
mc2._visible = false;

第16帧:

showText(mc1);

第70帧:

stop();
showText(mc2);

showText就是开始这行文字动画的命令,你想从哪里开启这行文字的动画,就在时间轴的那里执行他。mc1和mc2指明控制的是哪个影片剪辑。

运行得到的效果我录了一个gif,放在图二了希望能动。

方法B:

这个是通篇的文字一起操作,时间轴如图三,每个单字都是一个影片剪辑,并且将他们顺序命名为【mc0】到【mc12】。(我这里才命名到12,你通篇不知道要命名到多少呢,就是这个起名字简直重复劳动)

哦如果你不知道的话,这里有一个批量转换成影片剪辑的方法很实用→网页链接

你把一段文字【打散】,然后全选执行上面的方法就可以了。哦···记得要左下角作为坐标原点···这个使用方法的默认原点是中心,啊···你调一下参数,实在不满意就去每个字调中心点吧,但是这样还蛮作死的···

代码部分如下:

import com.greensock.*;
import com.greensock.easing.*;


var arr:Array = new Array();
var len:Number = this.getNextHighestDepth();

var i:Number = 0;
var obj:MovieClip;
for ( obj in this) {
  if (typeof (this["mc" + i]) == "movieclip") {
  this["mc" + i]._alpha = 0;
  this["mc" + i]._yscale = 0.1;
  i++;
  }
}

for(var j:Number = 0; j<i; j++){
TweenLite.to(this["mc" + j], 0.2, {_alpha:100, _yscale:100, delay:0.2*j, ease:Back.easeOut});
}

效果截了个gif,放在图4

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式