[Note] Đưa object lên trên cùng (z-index) khi thực hiện kéo thả

Mục đích

Khi thực hiện kéo thả một Object (một MovieClip chẳng hạn), sẽ thật khó chịu khi kéo nó qua những Object khác mà nó lại bị chui xuống bên dưới (theo trục z). Do vậy nhu cầu đưa Object đang được kéo lên trên cùng so với các objects (cùng cha) khác là một nhu cầu tất yếu.

Cách làm

Ví dụ chúng ta viết script kéo thả cho 100 miếng ghép từ piece1_mc đến piece100_mc trong một trò chơi ghép hình. (Giả sử 100 objects này đều nằm ở Frame chính - root)

for (var i:int=0; i < 100; i++){
    root["piece"+i+"_mc"].addEventListener(MouseEvent.MOUSE_DOWN, startMove(i));
	root["piece"+i+"_mc"].addEventListener(MouseEvent.MOUSE_UP, stopMove(i));
}

function startMove(i:int):Function{
    return function(e:MouseEvent):void{
        var piece_obj = root["piece"+i+"_mc"];
		piece_obj.startDrag();
		piece_obj.parent.setChildIndex(piece_obj, piece_obj.parent.numChildren - 1);
    }
}

function stopMove(i:int):Function{
    return function(e:MouseEvent):void{
	    root["piece"+i+"_mc"].stopDrag();
    }
}

Như chúng ta để ý thì cách để lôi object đang được kéo lên trên khá đơn giản, đó là đặt index cho nó là to nhất trong số những object con có cùng cha với nó.

piece_obj.parent.setChildIndex(piece_obj, piece_obj.parent.numChildren - 1);

P.S. Bài viết mang đậm tính chất take note để dùng cho sau này. Mong mọi người góp ý (lay2)


All Rights Reserved