主题:  简单的鼠标跟随教程!!

金山羊

职务:普通成员
等级:4
金币:10.0
发贴:827
#12002/1/8 18:05:31
简单的鼠标跟随教程

鼠标跟随是flash里一个“古老的”的话题了,可是现在还有人问起这个问题,我们论坛上最近也没有人说了,我就把我半年前做的做成一个教程,供大家学习,这个完全是有我个人制作的,如有雷同,纯属巧合。

// 设计者,当前帧工作室goldgoat于2001年五月30日+
// 版权所有、欢迎复制^_^

鼠标跟随其实是一个很简单的问题,可以有很多种算法来实现,在这里我介绍一下我自己编写的一种,希望大家参考。

第一步:建立一个word MC,内有一个在中间的动态文字框,去掉可选,只需要能容纳一个字即可。字的颜色可以自己设定(千万不能是和底色是一样的啊!)

第二步:在library的连接里将word MC输出为word 符号已被以后使用你看前两步很简单吧
以后的也不难,只要你会一点点的action

第三步:(也很容易的)在你想要有移动文字的场景下(可以是主场景,也可以是另外一个mc,我是用的一个mc叫move),将默认层改为action层,然后添加两个关键帧,第二帧里的动作是:
gotoAndPlay(1);
注意:我这里不用mc,而用两帧的循环来替代entframe,我建议大家尽量把程序写在时间轴里,因为这样更有利于程序的管理,和程序运行顺序的选择,程序更一目了然,容易理解,希望大家养成这个好习惯。

第四步:(到这里还不难吧,下面是关键的程序了,就是第一帧的程序)
    鼠标跟随关键是要每个文字都要跟随鼠标,但是速度不能一样快,最后停止的位置也不能一样,理解了这一点,程序就很容易理解了。具体程序及说明如下:


if (ip == null) {
    Mouse.hide();    //隐藏鼠标
    lx = 20;    // 设置字的间距
    string = "当前帧工作室";    // 设置要跟随的文字
    wordlenth = string.length;
    for (i=0; i        this.attachMovie("word", "word"+i, i+1);
        this["word"+i].word = mbsubstring(string, i+1, 1);
        //获取mc并把要显示的字一次导入其中显示
    }
    ip = 0;
}
//
delay = 6;// 设置延迟时间,来控制字的移动速度
word0._x += (_xmouse+lx-word0._x)/delay;
// 初始化第一个字的位置
word0._y += (_ymouse-word0._y)/delay;
for (i=1; i    // 确定以后字的移动和位置
    delay += 0.5;
    this["word"+i]._x += (this["word"+(i-1)]._x+lx-this["word"+i]._x)/delay;
    this["word"+i]._y += (this["word"+(i-1)]._y-this["word"+i]._y)/delay;
}
// 设计者,当前帧工作室goldgoat于2001年五月30日+
// 版权所有、欢迎复制^_^


以上就是整个程序了,就这么简单,不难吧^_^。
if (ip == null)这句判断是为了数据的初始化,在里面的程序仅执行一次,以后就不执行了。
(这可是非常有用的阿,一定要掌握)

第五步:好了,所有的事都做完了,下面的就是画蛇添足了,就是加上一个自己的鼠标,做一个自己的鼠标mouse放到主场景下,然后在action层里加一句:
    startDrag ("mouse", true);
还有就是可别忘了隐藏自己的鼠标啊


最后,我给大家附上一个效果和源文件,供大家参考

页面:点这儿参观
 源文件

编辑历史:[这消息被goldgoat编辑过(编辑时间2002-01-08 18:07:24)]
[这消息被goldgoat编辑过(编辑时间2002-01-08 18:22:22)]
[这消息被goldgoat编辑过(编辑时间2002-01-08 18:24:21)]
[这消息被goldgoat编辑过(编辑时间2002-01-10 22:17:46)]
[这消息被goldgoat编辑过(编辑时间2002-01-11 09:45:09)]

5d.cn
FLASHDEP
TECHNOLOGY SUPPORT
JAVA/ACTIONSCRIPT/javascript
CFML/JSP/COLDFUSION/FLASH REMOTING
JRUN/COLDFUSIONMX
FLASH/DREAMWEARER

5D荣誉斑竹

职务:普通成员
等级:2
金币:2.0
发贴:617
#22002/1/8 18:56:07
good!
不赖,虽然我没看到~~~呵呵~~你那个服务器真是麻烦!
看看这里!想成为图标用户还要加油~~~



金山羊

职务:普通成员
等级:4
金币:10.0
发贴:827
#32002/1/10 22:35:31
桃人在上个帖子中说
引用:
good!
不赖,虽然我没看到~~~呵呵~~你那个服务器真是麻烦!
看看这里!想成为图标用户还要加油~~~


那我还是要抓紧时间阿
只是要500分把
估计也不会太长了
我再经典上有空间了,我现在都是连接到那里的
你说的5d的空间我上不去


5d.cn
FLASHDEP
TECHNOLOGY SUPPORT
JAVA/ACTIONSCRIPT/javascript
CFML/JSP/COLDFUSION/FLASH REMOTING
JRUN/COLDFUSIONMX
FLASH/DREAMWEARER

5D限制级

职务:普通成员
等级:6
金币:10.0
发贴:4970
#42002/1/13 13:31:39
this["word"+i].word = mbsubstring(string, i+1, 1);

里面的.word是什么意思啊?



金山羊

职务:普通成员
等级:4
金币:10.0
发贴:827
#52002/1/15 12:19:19
liuwws在上个帖子中说
引用:
this["word"+i].word = mbsubstring(string, i+1, 1);

里面的.word是什么意思啊?


word 就是你拖动的mc里面的动态字符的名字啊
一定要记住就是要给那个mc里的动态文字取这个名字


5d.cn
FLASHDEP
TECHNOLOGY SUPPORT
JAVA/ACTIONSCRIPT/javascript
CFML/JSP/COLDFUSION/FLASH REMOTING
JRUN/COLDFUSIONMX
FLASH/DREAMWEARER