在Flash CS5中拖动对象时将鼠标悬停在上方

Cod*_*e92 6 flash actionscript actionscript-3 flash-cs5

我有一个使用Flash Professional CS5和ActionScript 3的项目.

我需要在特定位置拖动对象时触发事件,但尚未丢弃它.然后,当我离开那个地方(仍在拖动)时,我需要触发一个不同的事件.但是,这应该只在我拖动对象时发生.

拖动时传统的鼠标悬停和鼠标离开事件不起作用(仅在不拖动时).

我该怎么做呢?

fel*_*aia 2

它不起作用的原因是顶部 DisplayObject(被拖动的那个 DisplayObject 正在窃取其自身的事件)。

您有几个选择,第一个是将 MOUSE_MOVE 事件添加到拖动的对象而不是特定点,并且您可以执行 hitTestObject ()来验证它们是否重叠,或者如果鼠标位于特定点内则执行hitTestPoint() 。

所以基本上这样做:

draggedObject.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);

function onMouseMove(evt : MouseEvent) : void {
    var particularSpot : MovieClip = MovieClip(evt.currentTarget.parent).getChildByName("particular spot object name");
    if(particularSpot.hitTestPoint(evt.mouseX, evt.mouseY)) // or use hitTestObject
    {
        // The mouse is on top of particular object
    }
    else
    {
        // The mouse is not on top of particular object
    }
}
Run Code Online (Sandbox Code Playgroud)

mouseChildren第二个是使用和属性禁用拖动对象的鼠标事件mouseEnabled,但这会破坏当前的拖动,您必须将事件重新排列到拖动对象的父级或舞台。