FLASH下载

设为首页
繁體中文
闪客留言

 首页 | FLASH动画 | FLASH专辑 | FLASH短片 | FLASH游戏 | FLASH歌曲 | FLASH教程 | Flash播放器代码 | 免费在线电影
您当前的位置:flash下载 -> FLASH教程 -> FLASH技巧 -> 文章内容  
栏目导航 相关文章
· FLASH基础 · FLASH实例教程
· FLASH技巧 · AS教程
·[组图]Flash MX一步步跟我...
·[组图]Flash遮罩特效实例-...
·[组图]Flash遮罩特效实例-...
·FLASH游戏制作精选实...
·[组图]用Flash打造迷你Win...
·[图文]Flash8 Blendmode—...
·Flash9.0播放器
·[图文]3D 鼠标跟随脚本详解...
·[图文]Flash 5 绘制螺旋图...
·[图文]Flash 5 精确下载制...


FLASH鼠标跟随代码实例

作者:转载  来源:[闪客]  发布时间:2006-9-24 16:51:01  编辑人:[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帧的话,那些代码也就只被执行了一次。

(完)

[] [返回上一页] [打 印]
上一篇文章:背背狗的世界
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [查看评论>>>]
  评论人:iuiiih   打分:85 分  发表时间:2008-8-30 13:31:28
· U3b3sh  <a href="http://jaxsrirbyryw.com/">jaxsrirbyryw</a>,...