关于flash判断位置跟随

来源:百度知道 编辑:UC知道 时间:2024/06/04 14:38:03
有一个影片剪辑 在场景中间
鼠标停留在影片剪辑上的时候图片不动
鼠标在Y方向离开图片100个像素后,图片再以缓动方式移动到鼠标位置.
有没有高手指点一下啊,有实例就更好了.
补充下,上面我说的"图片"和"影片剪辑"都是说的同一个东西.

回堕落人神:你说的只是思路吧,可能你没完全理解我说的意思,我再说详细点吧,若鼠标在Y方向离开影片剪辑的距离没有超过100个像素这个影片剪辑就不会移动.超过了100个像素距离才移动.怎么能用判断"鼠标移动前坐标""鼠标移动后的坐标"来实现呢?

可以这么分析.判断鼠标当前位置,如果鼠标当前位置的Y坐标小于MC的Y坐标值,则触发影片剪辑运动到当前鼠标的Y坐标位置.反之,若鼠标Y坐标大于MC的Y坐标+MC的高度值,则触发MC运动到当前鼠标的Y坐标位置.

假如你说的影片剪辑实例名为MC_Pic
那么在MC_Pic上加上触发鼠标事件函数:

onClipEvent (mouseMove){ //只要在场景中移动鼠标,就会不断触发后面的事件
_parent.MCMove(); //引用MCMove()这个函数,这个函数在下面我们会去编写定义它,以实现你需要达到的效果
}

在时间线最后一帧上写入判断代码如下:

stop(); //停止播放
function MCMove(){ //自定义一个函数 名字叫MCMove,这个其实何以随便取名字,不过要与前面引用的那个函数名字一样
var left_y = MC_Pic._y; //定义上高度
var right_y = MC_Pic._y + MC_Pic._height; //定义下高度
MC_Pic.onEnterFrame = function(){
if (_ymouse < left_y){ //如果鼠标高于MC_Pic上高度
MC_Pic._y = MC_Pic._y + (_ymouse - MC_Pic._y)/5; //缓动改变MC_Pic的Y坐标到鼠标当前Y坐标
}
else if (_ymouse > right_y){ //如果鼠标低于下高度
MC_Pic._y = MC_Pic._y + (_ymouse - (MC_Pic._y + MC_Pic._height))/5; //缓动改变MC_Pic的Y坐标到鼠标当前Y坐标
}
else {
delete this.onEnterFrame; //移动出flash则清除
}
}
}

获取鼠标的移动前和移动后焦点坐标
再以阻尼系数公式用前后两次的坐标计算