我有4个对象movieClips(假设Card1,Card2,Card3,Card4)。
Card4位于顶部且覆盖Card3的某些部分,与Card3覆盖Card2的某些部分相同,而Card2覆盖了Card1的某些部分。
现在每当我在Card3上拖动Card4时我想做什么。所以,这里Card4应该采取与之前相同的位置或深度。 而card3应该采用Card4 Position手段,以及Card4之前的位置。
我怎样才能做到这一点?这是我的鼠标按下事件。这里的板子是我的容器,我把所有卡片放在显示对象上。
function CardDraging(event:MouseEvent):void
{
event.target.startDrag();
currentCard = event.target as DisplayObject;
board.setChildIndex(currentCard, board.numChildren-1);
}
答案 0 :(得分:0)
你应该添加条件:如果当前卡是Card4并且它击中了测试卡3,那么......
if (currentCard == Card4 && currentCard.hitTestObject(Card3))
{
// If Card3 under Card4, then move Card3 to top.
if (getChildIndex(Card3) < getChildIndex(Card4))
swapChildren(Card3, Card4);
}
更新1:
import flash.events.MouseEvent;
import flash.display.MovieClip;
addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
var currentCard: MovieClip;
function mouseDown(event: MouseEvent): void
{
currentCard = event.target as MovieClip;
currentCard.startDrag();
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
}
function mouseMove(event: MouseEvent): void
{
if (currentCard.hitTestObject(Card1))
{
if (getChildIndex(Card1) < getChildIndex(currentCard))
swapChildren(Card1, currentCard);
}
else if (currentCard.hitTestObject(Card2))
{
if (getChildIndex(Card2) < getChildIndex(currentCard))
swapChildren(Card2, currentCard);
}
else if (currentCard.hitTestObject(Card3))
{
if (getChildIndex(Card3) < getChildIndex(currentCard))
swapChildren(Card3, currentCard);
}
else if (currentCard.hitTestObject(Card4))
{
if (getChildIndex(Card4) < getChildIndex(currentCard))
swapChildren(Card4, currentCard);
}
event.updateAfterEvent();
}
function mouseUp(event: MouseEvent): void
{
currentCard.stopDrag();
stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUp);
}
更新2:
import flash.events.MouseEvent;
import flash.display.MovieClip;
addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
var currentCard: MovieClip;
function mouseDown(event: MouseEvent): void
{
currentCard = event.target as MovieClip;
currentCard.startDrag();
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
mouseMove(event);
}
function mouseMove(event: MouseEvent): void
{
if (currentCard != Card1 && currentCard.hitTestObject(Card1))
{
if (getChildIndex(Card1) < getChildIndex(currentCard))
swapChildren(Card1, currentCard);
}
if (currentCard != Card2 && currentCard.hitTestObject(Card2))
{
if (getChildIndex(Card2) < getChildIndex(currentCard))
swapChildren(Card2, currentCard);
}
if (currentCard != Card3 && currentCard.hitTestObject(Card3))
{
if (getChildIndex(Card3) < getChildIndex(currentCard))
swapChildren(Card3, currentCard);
}
if (currentCard != Card4 && currentCard.hitTestObject(Card4))
{
if (getChildIndex(Card4) < getChildIndex(currentCard))
swapChildren(Card4, currentCard);
}
event.updateAfterEvent();
}
function mouseUp(event: MouseEvent): void
{
currentCard.stopDrag();
stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUp);
}