AS3装扮游戏拖拉不工作

时间:2016-10-19 21:16:29

标签: actionscript-3

我正在打扮装扮,遇到了以下问题。

我知道如何拖放,但每当movieclip位于另一个下面的图层时,它就不会让我放弃它/不会注册鼠标。

在这种情况下例如 - 最顶层是娃娃的头发。在这一层下面是衣服,下面是玩偶基地。像这样:https://gyazo.com/a0ea8eae2ee5505874f4207a888249bf

我可以从库存中挑选一个顶部,但不能将它放在玩偶上,因为我的光标位于最顶层的头发上方。在某种程度上,似乎头发层充当光标点击和衣服之间的屏障。有没有办法解决?

以下是现在游戏的链接 - 如果您尝试移动游戏,我相信您会很快看到问题。GAME LINK

如果需要,以下是其中一个衣服层的代码。

tshirt.addEventListener(MouseEvent.MOUSE_DOWN, drag17);
tshirt.addEventListener(MouseEvent.MOUSE_UP, drop17);
function drag17(event:MouseEvent):void
{
event.target.startDrag();
}
function drop17(event:MouseEvent):void
{
event.target.stopDrag();
}

对于相当粗略的解释感到抱歉,并提前感谢你!

1 个答案:

答案 0 :(得分:0)

问题

你对头发的阻碍是完全正确的。

方法1

解决这个问题的一种方法是(假设你把头发放在那里):

function drop17(event:MouseEvent):void
{
    event.target.stopDrag();
    event.target.mouseEnabled = false;
}

在你的头发示例中,头发需要将mouseEnabled设置为false,这样才能在鼠标事件中错误地成为你的target。如果头发没有掉落"在那里,将mouseEnabled设置为假,只要它有意义的话......也许是在它首次构建或实例化时。

方法2

另一种方法是强制您拾取的项目到达z顺序的前面。像这样:

function drag17(event:MouseEvent):void
{
    addChild(event.target); // this doesn't add another Sprite or movie clip, it just moves it to the top of the z order. Trust me. 
    event.target.startDrag();
}

现在你的拖动元素位于顶部,没有任何东西会在"之间出现。它和鼠标。这种方法可能看起来更干净,因为你拖动的东西并不会落后于其他东西。这将迫使您处理最终需要在放下项目时将项目置于正确的z顺序中,但这可以通过将addChild添加到clothesContainer或类似的东西来轻松完成。那将是另一个问题。