[as2]关于_lockroot和hitTest(x,y,flag)
MovieClip类的hitTest(x,y,flag)用来判断MC是否与x,y标识的区域发生重叠或相交。此处参数x: Number 舞台上点击区域的 x 坐标。y: Number 舞台上点击区域的 y 坐标。x 和 y 坐标都在全局坐标空间中定义。经常用到的是判断是否和鼠标点碰撞,而当用来判断的MC并不直接位于舞台上,而是在其他MC里面时,为了简单,通常直接使用.hitTest(_root._xmouse,_root._ymouse,flag)。这样是可以达到效果的,但是当多个SWF文件组合在一块使用,特别是加载到其他SWF的某个MC里去运行的时候,就有可能产生错误。正像前一篇文章[AS]使用MovieClipLoader时何时指定_lockroot属性描述的一样,通常需要指定_lockroot属性,这样才能保证加载进来的SWF文件里的_root指向正确,但是一旦指定了_lockroot属性,那么_root._xmouse,_root._ymouse也被限制为加载进来的SWF的鼠标点了,这样,hitTest就不正确了。
因此,在使用hitTest(x,y,flag)时,最好把x,y点通过localToGlobal转换成全局坐标再使用,而不是使用_root._xmouse,_root._ymouse.

Leave a Reply