AS3 startDrag()只拖动MC的一部分....留下儿童(按钮和文本)

时间:2016-02-18 06:51:07

标签: actionscript-3 flash air

我创建了一个定时器的MC。在MC内部有按钮,用于设置倒计时时间和清除它,一些按钮用于启动和重置计时器,还有一个动态文本字段用于显示时间。每个按钮都有事件监听器和详细的代码。

在舞台上,我有一个按钮,它为舞台添加了一个addchild(计时器),然后我让它可以拖动。但是,当我拖动它时,只有我的第一层,背景层拖动,而影片剪辑的其余部分保持不变。我向计时器添加了一个按钮模式,但是手只显示在背景上,而不是时间文本所在的区域。我还应该做些什么来将整个容器拖到屏幕上?

function addATimer(event:MouseEvent):void
{
    var _timer:mc_timer = new mc_timer;
    dragArray.push(_timer);
    _timer.x = 260;
    _timer.y = 157;
    _timer.buttonMode = true;
    addChild(_timer);
    _timer.addEventListener(MouseEvent.MOUSE_DOWN, startDragging);
    trace (dragArray);
}


// function for the start dragging event. 
function startDragging(event:MouseEvent):void
{
    draggedObject = MovieClip(event.target)
    draggedObject.startDrag();
    stage.addEventListener(MouseEvent.MOUSE_UP, stopDragging);  
}


//function to stop the draggable object.  
function stopDragging(event:MouseEvent):void
{
    draggedObject.stopDrag();
    stage.removeEventListener(MouseEvent.MOUSE_UP, stopDragging);   
}

谢谢!

1 个答案:

答案 0 :(得分:1)

问题在于event.target引用了您点击的内容(也可以是您添加了侦听器的DisplayObjectContainer的子代。

另一方面,

event.currentTarget始终是对您添加侦听器的对象的引用。

在您的情况下,将与拖放功能相关的代码添加到类mc_timer中是有意义的。