as文字效果初探(实例详解)

      flash学习 2004-12-18 23:9
as文字效果初探(实例详解)
呵呵,好久没弄点东西了,前段时间看到许多朋友对as弄的文字效果比较感兴趣,
的确用个循环,可以节省很多工夫去弄一个个的mc,我只是弄个小小的例子,呵呵高手嘛,可以不用浪费时间了:)
先看看它的摸样
bbs.flash8.net//attach/2003/02/08/355425-say.swf
我所有代码都写在了第一帧:
跟你说说思路你看了那么长的东西就不会那么痛苦了:)
1、初始化将一指定的字符串取出来,然后用数组储存ord()值
2、创建函数,用创建几个函数分别用来:1)用chr(number)函数内的number与ord()计算值(数组储存)关联,实现字的变化
2)当一个字母显示完成,调用library内的mc,并控制它的位置。
3)当所有字都出来的时候就演化到下一个效果,要它运动。
下面是原代码,重点的地方我解释之:
_root.onLoad = function() {
t = " I love flash8.net !!";//初始化所要显示出的文字
mynumber = new Array();
myt= new Array();//新建两个数组一个来储存substring取出的字母,一个储存ord()计算出来的数值
l = t.length;
for (i=0; i<=l-1; i++) {
myt[i] = substring(t, i+1, 1);
mynumber[i] = ord(myt[i]);
}
_root.j = 0;
m = .8;
s = .2;//这里的系数是缓冲运动时用的系数
};
_root.onEnterFrame = playnumber;//onMouseMove调用tshow函数
function scale(min, max) {//定义一个函数随机取得从min到max之间的数值,取整。
nu = int((Math.random()*(max-min+1))+min);
return nu;
}
function playnumber() {
if (_root.j<=(l-1)) {//如果j小于原字符的长度则:
nn = scale((mynumber[_root.j]-5), (mynumber[_root.j]+20));//用scale函数取随机数
_root["tt"+_root.j].tt = chr(nn);//将数字转化成字母
if (nn == mynumber[_root.j]) {//当随机数与数组储存的数字相同的时候:
_root.j = _root.j+1;
_root.teout();
}
} else {
_root.makemove();
}
}
function teout() {
_root.attachMovie("tt", "tt"+_root.j, _root.j);//以下控制字母的位置
if (_root.j == 1) {
_root["tt"+_root.j]._x = 50;
_root["tt"+_root.j].oldx = _root["tt"+_root.j]._x;
_root["tt"+_root.j]._y = 180;
} else {
_root["tt"+_root.j]._x = _root["tt"+(_root.j-1)]._x+24;
_root["tt"+_root.j]._y = 180;
_root["tt"+_root.j].oldx = _root["tt"+_root.j]._x;
}
}
//一个mc不能同时加载两个onload事件
//下面让他动起来
function makemove() {
for (n=1; n<=l-1; n++) {
_root["tt"+_root.n].dx = _root["tt"+_root.n]._x-_xmouse;
_root["tt"+_root.n].dy = _root["tt"+_root.n]._y-_ymouse;
_root["tt"+_root.n].dis = _root["tt"+_root.n].dx*_root["tt"+_root.n].dx+_root["tt"+_root.n].dy*_root["tt"+_root.n].dy;
if (_root["tt"+_root.n].dis<10000) {//如果字母与鼠标的距离小于100就让他跑到距离鼠标为100的位置处,缓冲到达!!
_root["tt"+_root.n].angle = Math.atan2(_root["tt"+_root.n].dy, _root["tt"+_root.n].dx);
_root["tt"+_root.n].tx = _xmouse+100*Math.cos(_root["tt"+_root.n].angle);
_root["tt"+_root.n].ty = _ymouse+100*Math.sin(_root["tt"+_root.n].angle);
_root["tt"+_root.n].vx += (_root["tt"+_root.n].tx-_root["tt"+_root.n]._x)*s;
_root["tt"+_root.n].vy += (_root["tt"+_root.n].ty-_root["tt"+_root.n]._y)*s;
} else {
_root["tt"+_root.n].vx += (_root["tt"+_root.n].oldx-_root["tt"+_root.n]._x)*s;
_root["tt"+_root.n].vy += (180-_root["tt"+_root.n]._y)*s;
}
_root["tt"+_root.n].vx *= m;
_root["tt"+_root.n].vy *= m;
_root["tt"+_root.n]._x += _root["tt"+_root.n].vx;
_root["tt"+_root.n]._y += _root["tt"+_root.n].vy;
}//呵呵写完这我才发现要是用eval加with会简化很多
}
下面是原文件,希望大家来侃侃!把好的字体效果都传上来,有一个思路的讲解就更好了,或者看到不错的效果大家一起研究研究!!
[此贴子已经被作者于2003-4-7 16:49:01编辑过]

点击浏览附件
http://file.flash8.net/attach/2003/02/08/355474-txt.rar
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}