用Flash制作鼠标的文字跟随效果
网络与通信
鼠标跟随已经是Flash里一个“古老的”的话题了,但可能很多Flash的初学者还不能自己编写出鼠标跟随程序,在网上找个源文件又很难,在这里我就教大家做一个。
鼠标跟随其实是一个很简单的问题,可以通过很多种算法来实现。
下面我就介绍整个制作的过程:
▲第一步
建立一个名为Word的 MC((图1)),内有一个在中间的动态文字框名为Word,去掉可选,只需要能容纳一个字即可((图2))。字的颜色可以自己设定(千万不能和底色是一样的啊!),另外一定要把文字框居中,而且要让文字对齐居中。


▲第二步
在Library的连接里将Word MC输出为Word 符号,以备使用((图3))。

▲第三步
建立一个名为Move的MC,在MC的时间轴上做两层,分别取名为Aunction,Action(都锁定),Function一共一帧,Action有两个关键帧((图4)),其中第二帧的Action是:GotoAndPlay(1):

(注意:我这里不用MC,而用两帧的循环来替代Entframe,我建议大家尽量把程序写在时间轴里,因为这样更有利于程序的管理和程序运行顺序的选择,程序更一目了然,容易理解,希望大家养成这个好习惯。)
▲第四步
下面就讲我的这个鼠标跟随最重要的部分,主程序部分,我用了模块化的面相对象的编程方法,在Flash里还是比较先进的,希望大家好好学习,不仅可以让你学会怎样做鼠标跟随,也能让你掌握一种全新的Flash的编程方法。
下面是function层里的全部程序,仔细看:
//复制Word的MC,其中的参数是复制出来的mc的深度,返回值是复制出来的MC
function New_word (c_deep)
{
attachMovie("word","word" + c_deep,c_deep);//提取mc
return eval("word" + c_deep)//以mc的方式返回
};
//下面是鼠标跟随数据的初始化,其中两个参数,第一个是你要跟随的文字,第二个是文字与文字间的间隔(省略为20)
function Mymouse (c_string,c_lx)
{
if(c_lx == null) this.lx=20;
else this.lx = c_lx;//如果没有距离参数,则取默认值20
this.word_mc = new Array//说明存储文字的数组
this.wordlenth = c_string.length;//获得跟随文字的个数
for (this.i=0; this.i
this.word_mc[this.i].word = mbsubstring(c_string,this.i+1,1);
}//以上for循环是把每个字符存入数组
trace(this.word_mc);
};
//下面是鼠标跟随的鼠标移动的函数,主要功能是控制跟随文字的移动
Mymouse.prototype.My_move = function ()
{
this.delay = 5;//设置延迟时间,控制文字移动速度
this.word_mc[0]._x += (_xmouse+this.lx-this.word_mc[0]._x)/this.delay;
this.word_mc[0]._y += (_ymouse-this.word_mc[0]._y)/this.delay;//以上两句是控制第一个字的移动
for (this.i=1; this.i
this.word_mc[this.i]._x += (this.word_mc[this.i-1]._x+this.lx-this.word_mc[this.i]._x)/this.delay;
this.word_mc[this.i]._y += (this.word_mc[this.i-1]._y-this.word_mc[this.i]._y)/this.delay;
}//以上for循环一次控制每一个字的移动,因为延迟时间逐渐增加,后面的字总比前面的字移动慢,这样就产生了鼠标跟随的效果。
return true;
};
//功能程序结束
这样,我们的大部分程序就写完了,相信你已经看懂了,下一步就是怎样实现鼠标跟随了。
▲第五步
完成鼠标跟随。
在action层的第一帧里写入下面程序((图5)):

//下面的判断是非常重要的,它保证了在帧与帧循环播放时一个程序只进行一次!
if (ip == null) {
ip = 0;//设置标志为,下次不再执行if内的程序。
my_mouse = new Mymouse("当前帧工作室",15);//初始化鼠标跟随的文字和间隔。
}
my_mouse.My_move();//每一帧都执行文字的移动函数,以实现鼠标的跟随。
最后,把我们这个MC拖入主场景就ok了。
这样,我们就完成了自己的鼠标跟随,如果你需要自己的跟随文字,只要修改“my_mouse = new Mymouse("当前帧工作室",15);”里面的文字就行了,如果你觉得文字跟得太快或太慢的话,只要你修改一下My_move函数里的this.delay的值就行了。如果你能修改My_move里面的控制文字移动的方法的话,你还能作出自己的鼠标跟随方式来。