Как скрыть элементы перетаскивания после их перетаскивания на место? - PullRequest
0 голосов
/ 01 апреля 2012

Я сделал флеш-приложение, и в этом флеш-приложении я включил мозаику.Приложение написано на одной временной шкале, и определенные кадры используются как разные страницы в приложении.

Проблема в том, что при перемещении мозаики фрагменты отображаются во всех кадрах, а не только в одном кадре мозаики, который я создал.

Как сделать эти элементы перетаскиванияне показываться на других кадрах?

Вот код, который я использовал для головоломки.

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;      
    }   
}
}

Заранее благодарю за любую предоставленную помощь.

1 Ответ

0 голосов
/ 01 апреля 2012

Вы должны действительно попробовать использовать внешние классы при создании игр. Но чтобы решить вашу проблему, вы можете убрать фигуры со сцены, когда переходите к определенному кадру. Таким образом, в кадре вы хотите, чтобы они исчезли, вы могли бы написать следующее:

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

однако, если вам нужно вернуться к этому кадру, вы можете переключить свойство visiblabilty каждой части головоломки. Вы бы перебрали цикл, но изменили бы видимость так:

dropArray[i].visible = false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...