我做了一个拖动和匹配游戏,我有一个矩形圆movieclip ..当矩形/或圆形按一个特定的框矩形将始终在圆后面,圆将永远在重新调整,如果我先拖动矩形然后圈它的确定..但如果我先拖动圆圈然后矩形..circle总是占据ractengle后面的位置我使用stage.swapChildren(ccircle,crect)但它不起作用......这里是我的代码
crect.addEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown1);
function item_onMouseDown1(event:MouseEvent):void
{
crect = MovieClip(event.target);
startX1 = crect.x;
startY1 = crect.y;
crect.startDrag();
setChildIndex(crect, this.numChildren-1);
stage.addEventListener(MouseEvent.MOUSE_UP, stage_onMouseUp1);
}
function stage_onMouseUp1(event:MouseEvent):void {
stage.removeEventListener(MouseEvent.MOUSE_UP, stage_onMouseUp1);
crect.stopDrag();
if(crect.hitTestObject(box3))
{
TweenMax.to(crect, 0.5, {x:hit2X, y:hit2Y,height:height2Y, width:weight2X, ease:Cubic.easeOut});
//crect.mouseEnabled=false;
}
else
{
TweenMax.to(crect, 0.5, {x:startX1, y:startY1, ease:Bounce.easeOut});
}
}
ccircle.buttonMode=true;
ccircle.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown1);
function onMouseDown1(event:MouseEvent):void
{
ccircle = MovieClip(event.target);
startX1 = ccircle.x;
startY1 = ccircle.y;
ccircle.startDrag();
setChildIndex(ccircle, this.numChildren-1);
stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp1);
}
function onMouseUp1(event:MouseEvent):void {
stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp1);
ccircle.stopDrag();
if(ccircle.hitTestObject(box3))
{
TweenMax.to(ccircle, 0.5, {x:hit1X, y:hit1Y,height:height1Y, width:weight1X, ease:Cubic.easeOut});
//stage.swapChildren(ccircle, crect);
//setChildIndex(ccircle, this.numChildren-1);
//ccircle.mouseEnabled=false;
}
else
{
TweenMax.to(ccircle, 0.5, {x:startX1, y:startY1, ease:Bounce.easeOut});
}
}
答案 0 :(得分:0)
您无法将ccircle
索引更改为-1。只有0,1,2,......
stage.setChildIndex(ccircle, -1);
你应该写:
if (getChildIndex(ccircle) < getChildIndex(crect))
swapChildren(ccircle, crect);
这意味着:如果ccircle
位于crect
之下,则将ccircle
置于最顶层。
答案 1 :(得分:0)
你可以使用
removeChild(crect);
addChild(crect);
这将始终将crect
放在首位。当然,如果您需要ccircle
在上面,请执行相同的操作。
答案 2 :(得分:0)
我只需设置setChildIndex(crect,this.numChildren-2); 和setChildIndex(crect,this.numChildren-2);并且它的工作完美,因为它不仅仅用于设置圆形顶部。拖动时我必须将拖动的对象放在其他对象的顶部..
答案 3 :(得分:0)
我还找到了一些你可以阅读的信息 Gary Rosenzweig网站,我一直在flash的显示列表上学习自己。
网站为http://flashgameu.com/,向下滚动查看&#34;了解显示列表。&#34;
它解释了按名称和显示列表中的位置交换子项。
观看他的播客将帮助您使用显示列表与交换子,addChild,removeChild和childIndex来理解选项。
它也是免费的,也是一个很好的网站,提供了一些关于如何使用flash和as3编程的信息。