永发信息网

用Flash如何制作鼠标跟随?谁能告诉我具体操作步骤和给我些网址。先谢谢啦!

答案:1  悬赏:40  手机版
解决时间 2021-04-25 07:04
用Flash如何制作鼠标跟随?谁能告诉我具体操作步骤和给我些网址。先谢谢啦!
最佳答案

鼠标跟随代码物体对鼠标的跟随可以采用在帧上添加as语句starDrag的方法来实现。
但是采用这种方法所实现的跟随过程太生硬,跟得实在是紧,也就是当鼠标移动到别的位置,物体也很快的移动了过来,假如要让物体慢慢(速度可以控制)的靠近鼠标,使用starDrag这条语句就不能做到。


慢慢靠近的效果:




starDrag语句的功能其实是和下面的代码相同的。

onClipEvent (enterFrame) { xTarget = _root._xmouse; yTarget = _root._ymouse; _x = xTarget; _y = yTarget;}


这几行代码是添加在物体(影片剪辑)上面的。


其中,语句 _x = xTarget 和 _y = yTarget的作用是使物体的坐标定位到(xTarget,yTarget)上,
而(xTarget,yTarget)就是鼠标的当前坐标。


修改这几行代码,就可以使物体在鼠标移动后,慢慢的靠近鼠标。


_x = xTarget 等价于 _x = xTarget + _x - _x(加一个减一个)
即:_x =_x + (xTarget - _x)
其中的(xTarget - _x)是物体的目标位置与当前位置的坐标差


如果让(xTarget - _x)乘上一个小于1的系数,那么物体就不会突然移动到坐标(xTarget,yTarget)上,
而是慢慢的靠过去。


于是,修改后的代码如下: 绍兴黄页

onClipEvent (enterFrame) { xTarget = _root._xmouse; yTarget = _root._ymouse; fraction=0.5; _x = _x + (xTarget-_x)*fraction; _y = _y + (yTarget-_y)*fraction; }

实现了慢慢靠近


对“慢慢靠近”的加以利用:一个跟一个




场景上放置一个影片剪辑,instance name命名为darg0


在帧上添加代码:

copies = 5;for (var i = 1; i<=copies; i++) { duplicateMovieClip ("drag0", "drag"+i, i); eval("drag"+i).num = i;}

上面的代码复制了5个,drag1~drag5,连同drag0,场景上共6个
其中,还给drag1~drag5定义了内部变量drag1.num~drag5.num


在场景上的drag0上面添加代码:

onClipEvent (enterFrame) { if (num) { xTarget = eval("_root.drag"+(num-1))._x; yTarget = eval("_root.drag"+(num-1))._y; } else { xTarget = _root._xmouse; yTarget = _root._ymouse; } fraction = .5; _x += (xTarget-_x)*fraction; _y += (yTarget-_y)*fraction;}

这几行代码使得drag0跟随着鼠标,drag1跟随着drag0,drag2跟随着drag1,……,drag5跟随着drag4


解释一下if这个判断语句


因为drag1.num~drag5.num的值都不为空,所以对于drag1~drag5这5个影片剪辑,执行的代码是:
xTarget = eval("_root.drag"+(num-1))._x;
yTarget = eval("_root.drag"+(num-1))._y;也就是跟随着前一个
而对于drag0,由于没有给它定义num,它的值为空,所以对于drag0,执行的代码是:
xTarget = _root._xmouse;
yTarget = _root._ymouse;也就是跟随着鼠标


“一个跟一个”代码的另一种写法 绍兴网址导航


上面的“一个跟一个”的制作,是在场景上只放置了一个影片剪辑,然后在影片剪辑上添加as代码,再通过在帧上添加as代码(duplicateMovie)来复制影片剪辑。


还可以用另外一种代码方式来实现


效果




这种方式是直接在场景上放置了6个影片剪辑,依次命名为:drag0~drag5。然后在帧上添加代码如下:

_root.drag0._x = _root._xmouse+10; _root.drag0._y = _root._ymouse;i = 1;while (i<=5) { dragi = eval("/drag"+i); dragi_prev = eval("/drag"+(i-1)); dragi._x += (dragi_prev._x-dragi._x)*0.5+10; dragi._y += (dragi_prev._y-dragi._y)*0.5; i = i+1;}


该代码也是使得drag0跟随着鼠标,drag1跟随着drag0,drag2跟随着drag1,……,drag5跟随着drag4(但是每个相差10)


不过代码添加完毕,测试的时候,你会发现这些影片剪辑并不会移动。因为还需要下面一个步骤:


在时间轴的第二帧插入帧(F5),因为只有至少2帧,动画才会产生循环,上面那些代码也才会重复运行,否则如果只有1帧的话,那些代码也就只被执行了一次。





另外还有 绍兴指南针


1、你所指的效果先做一个MC,透明度从100到0的补间动画,其它效果你自己加。
2、把MC拖放到场景,在第一帧加入如下动作,//MC的实例名为mc.
_root.onLoad = function() {//主场景的load事件,只加载一次
for (var i = 1; i<=20; i++) { //for循环开始
_root.mc.duplicateMovieClip("mc"+i,i);//复制
_root["mc"+i]._xscale = 100-10*i;//设置x轴缩放比
_root["mc"+i]._yscale = 100-10*i;//设置y轴缩放比
_root["mc"+i]._alpha = 100-5*i;//透明度的变化
}//for循环结束
}//初始化完毕。
_root.onEnterFrame=function(){//onenterframe事件
for(var i=1;i<=20;i++){//for循环
if(i==1){//条件判断,如果i等于1,做以下动作
startDrag(_root["mc"+i],true);//拖动(复制出来的影片剪辑)
_root.mc._alpha=0;//让原来的MC不可见,也可以用mc._visible=0;同样 绍兴黄页
}
else{//否则
_root["mc"+i]._x=_root["mc"+i]._x+(_root["mc"+(i-1)]._x-_root["mc"+i]._x)/4+(_root["mc"+(i-1)]._x-_root["mc"+i]._x)*0.08;//这里有一个公式,自己去研究,很简单。
_root["mc"+i]._y=_root["mc"+i]._y+(_root["mc"+(i-1)]._y-_root["mc"+i]._y)/4+(_root["mc"+(i-1)]._y-_root["mc"+i]._y)*0.08;

}

}
}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有没有伤感好听的歌?朋友们推荐一下
每天想睡..睡不着怎么办额?
TRES DELICE 是什么香水?
女生棕色皮衣配什么颜色的围巾,我有一条草绿
亲爱的用英语怎么说?
CF中的礼仪是干吗的?
哥喜欢上我的好朋友:问题是女女有男朋友了;
沈阳长客总站电话多少?我想去新民在这能坐车
妙味菜馆在哪里啊,我有事要去这个地方
戴环应该在什么时候戴
大连新玛特杰克琼斯店电话
E66下什么格式的电影好!
想买套牧师时装选什么好?
机票有假的,如果是假怎能分出
我买的富士达的电车,还没一年,最近总出现一
推荐资讯
新出的传奇归来好不好玩大家给点意见?
几何题, 几何题 ... 特殊三角形~
我QQ是PS5版本的,为什么没有图标服务
微星N240GT-MD至尊512/D5-OC驱动下载
鸭子 这外号 怎么样?
常熟周行小学电话号码
忘了qq自由幻想服务器地址怎么找
为什么说起他的前女友他会不高兴甚至有点生气
谁知道庚在韩国综艺节目里面唱过的歌?
我在北京,他在外地,手机发信息怎么收费?
月经延迟了十天才来是为什么
程锦玲说我虚伪 该怎么办?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?