【问题标题】:How can I hide drag and drop items once they have been dragged into place拖放项目后如何隐藏它们
【发布时间】:2012-04-15 02:43:01
【问题描述】:

我制作了一个 Flash 应用程序,在这个 Flash 应用程序中我加入了一个拼图游戏。应用程序是在一个时间线上编写的,并且某些帧用作应用程序内的不同页面。

问题是,一旦移动拼图拖放,碎片就会显示在所有框架上,而不仅仅是我创建的一个拼图框架。

如何使这些拖放项不显示在其他框架上?

这是我用于拼图的代码。

var hitArray:Array = new Array(Tar1_mc,Tar2_mc,Tar3_mc,Tar4_mc,Tar5_mc,Tar6_mc);
var dropArray:Array = new Array(Piece1_mc,Piece2_mc,Piece3_mc,Piece4_mc,Piece5_mc,Piece6_mc);
var positionsArray:Array = new Array();

for (var i:int = 0; i < dropArray.length; i++)
{
dropArray[i].buttonMode = true;
dropArray[i].addEventListener(MouseEvent.MOUSE_DOWN, mdown);
dropArray[i].addEventListener(MouseEvent.MOUSE_UP, mUp);
positionsArray.push({xPos:dropArray[i].x, yPos:dropArray[i].y});
}
function mdown(e:MouseEvent):void
{
e.currentTarget.startDrag();
setChildIndex(MovieClip(e.currentTarget), numChildren - 1);
}
function mUp(e:MouseEvent):void
{
var dropIndex:int = dropArray.indexOf(e.currentTarget);
var target:MovieClip = e.currentTarget as MovieClip;
target.stopDrag();
if (target.hitTestObject(hitArray[dropIndex]))
{
    target.x = hitArray[dropIndex].x;
    target.y = hitArray[dropIndex].y;
}
else
{
    target.x = positionsArray[dropIndex].xPos;
    target.y = positionsArray[dropIndex].yPos;
}
}
reset_btn.addEventListener(MouseEvent.CLICK, backObjects);
function backObjects(e:MouseEvent):void
{   for(var i:int = 0; i < dropArray.length; i++){      
    if(dropArray[i].x == hitArray[i].x && dropArray[i].y == hitArray[i].y){         
        dropArray[i].x = positionsArray[i].xPos;
        dropArray[i].y = positionsArray[i].yPos;      
    }   
}
}

提前感谢您提供的任何帮助。

【问题讨论】:

    标签: actionscript-3 flash drag-and-drop


    【解决方案1】:

    在创建游戏时,您确实应该尝试使用外部类。但是要解决您的问题,您可以在进入某个帧时从舞台上移除碎片。因此,在您希望它们消失的框架中,您可以编写以下内容:

    for(var i:int = 0; i < dropArray.length; i++){
        if(this != null && this.contains(dropArray[i])){
         removeChild(dropArray[i]);
        }
    }
    

    但是,如果您需要返回此帧,您可以切换每个拼图的可见性属性。你会循环,但只会像这样改变可见性:

    dropArray[i].visible = false;
    

    【讨论】:

    • 感谢 Travis,非常感谢
    猜你喜欢
    • 2020-12-22
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多