flash as中怎么知道鼠标的路径是什么

来源:百度知道 编辑:UC知道 时间:2024/06/05 16:26:50
我要写一段代码,其中说当前影片剪辑的坐标等于鼠标的坐标,例子中是这样写的:
Mouse.hide();
mc.onMouseMove = function() {
this._x = this._parent._xmouse;
this._y = this._parent._ymouse;
updateAfterEvent();
};
mc是我在场景中的影片剪辑的实例名称,这些代码也是写在场景的帧上的。为什么鼠标的路径是this._parent._xmouse?鼠标到底在哪里呢?
另外,最后为什么要用updateAfterEvent();这个语句?
我觉得updateAfterEvent()这样解释更好:首先得知道flash播放头每到一帧就是把前一帧的场景刷新一下,显示下一帧的内容,updateAfterEvent()是用在播放头未到下一帧,还未更新,用户却要强制更新的地方 。

1.要解释这个问题,你首先得明白this指向的是何处:
因为你使用的是as2,在as2里,this指向的永远是当前对象,你的this是写在mc.onMouseMove里的,所以this._x就是指的是mc,显然mc在舞台上,要改变舞台上鼠标的坐标,就应该找到舞台,而舞台就是this._parent。

其实这句还可以这样写:this._x=_root._xmouse
直接用_root来指向舞台,这样写是不是就清晰多了

2.updateAfterEvent();是强制刷新事件,也就说实时的刷新所做出的改变,代码执行后,就强制FLASH Player重绘显示效果。

this._parent在这里指的是_root .它要获得的是舞台的鼠标位置.

_parent 来指定一个相对路径,该路径指向当前影片剪辑或对象之上的影片剪辑或对象,因为this在这里指的是影片剪辑本身,那它的上一级就是this._parent,也就是舞台.也可以这样写:
Mouse.hide();
mc.onMouseMove = function() {
this._x = _root._xmouse;
this._y = _root._ymouse;
updateAfterEvent();
};

updateAfterEvent();相当于刷屏,使动画更流畅.

鼠标的坐标是在场景里,也就是最外层。而影片剪辑是在场景的里一层。不同的层坐标系原点不一样。所以在影片剪辑的上一层才是鼠标所在的坐标因此要用到_parent(上一层的意思)而this是表示当前层 写了是为了方便了解 也可以不写
updateAfterEvent();的意思是这段代码表示的事件运行结束后更新舞台 这么写是为了 节省计算机的资源。

_xmouse 是每个MovieClip都有的属性,由于每个MovieClip的注册点不一定相同,所以它们的_xmouse也不一定相等; 换句话说:如果注册点相同的2个MC,它们的_xmouse也相等;
updateAfterEvent();是非必要的语句;作用楼上说了