我正在打扮装扮,遇到了以下问题。
我知道如何拖放,但每当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();
}
对于相当粗略的解释感到抱歉,并提前感谢你!
答案 0 :(得分:0)
你对头发的阻碍是完全正确的。
解决这个问题的一种方法是(假设你把头发放在那里):
function drop17(event:MouseEvent):void
{
event.target.stopDrag();
event.target.mouseEnabled = false;
}
在你的头发示例中,头发需要将mouseEnabled设置为false,这样才能在鼠标事件中错误地成为你的target
。如果头发没有掉落"在那里,将mouseEnabled设置为假,只要它有意义的话......也许是在它首次构建或实例化时。
另一种方法是强制您拾取的项目到达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或类似的东西来轻松完成。那将是另一个问题。