티스토리 뷰

ActionScript2.0 에서는 무비클립을 삭제하기 위한 메소드로 removeMovieClip() 이 있습니다.
attachMovie() 로 신나게 동적생성해서 추가했다가 초기화를 하려 했더니 이게 왠걸. 추가한 객체들이 전혀 삭제되지 않았습니다.
Reference 를 보니 아래와 같은 내용이 있더군요.

이 메서드는 음수 깊이에 할당된 무비클립을 제거하지 않습니다. 저작 도구에서 만든 무비 클립은 기본적으로 깊이에 음수 값이 할당됩니다. 음수 깊이에 할당된 무비 클립을 제거하려면, 먼저 MovieClip.swapDepths() 메소드를 이용하여 깊이를 양수 값으로 이동시킨 뒤에 삭제 하십시오.

아래는 스테이지에 무비클립 하나를 만들고, 삭제 테스트를 하는 예제 입니다.

  1. 스테이지에 아무 무비클립을 만듭니다.
  2. 이름을 box 로 지정합니다.
  3. 아래 코드를 작성 후 실행합니다.
    box.removeMovieClip();
    
    trace(box.getDepth());// -16383
    
    box.swapDepths(0);
    
    trace(box.getDepth());// 0
    
    box.removeMovieClip();
    
    trace(box.getDepth());// undefined

위 코드에서 removeMovieClip() 메소드 실행 했지만 삭제 되지 않아서 객체의 현재 깊이값(-16383)이  나오게 되는데, swapDepths() 로 객체의 Depth 를 0 으로 변경 후 removeMovieClip() 으로 삭제하해야 정상적으로 삭제가 됩니다.

이를 함수로 작성해 봤습니다.

// 현재 객체의 하위의 모든 MovieClip 객체를 삭제
MovieClip.prototype.removeChildAll = function() {
	for (var id in this) {
		if (typeof(this[id]) == "movieclip") {
			this[id].swapDepths(0);// Depth 변경 후 removeMovieClip() 으로 삭제
			this[id].removeMovieClip();
		}
	}
};
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함